qfxx第二周4

8:42到教室,又睡了一会懒觉,还好没迟到.最近都好困

依旧是花了一个小时讲了昨天的作业,

上午讲了偏函数,变量的作用域.中午回去睡了,然后就睡晚了…迟到了…
顺便介绍一下 一个特殊情况:

a=1
def dd():
    global a
    a+=1
    print(a)
    def dd1():
        #nonlocal a        #此时nonlocal 就无法访问a的地址(此时如果还要用a,则须用global(相当于解释器分不清global a 与nonlocal a 的区别))
        a+=1
        print(a)
    return dd1()
dd()

再介绍一个恒有意思的东西:闭包

def func():
    list1=[]
    for x in range(10):
        def inner():
            return x
        list1.append(inner)   #这里inner函数并没有执行!!!
    return list1
print(func())     #这里输出的是外函数list1中的10个inner函数的引用
list2=func()
for x in list2:   #神奇的事发生了,输出的全是9!!!
    print(x())

第二个情况的发生原因是,在外函数结束时,内函数仍在继续执行,其中在外函数定义的x在外函数执行完时被绑定给了内函数inner(此时x=9给了inner(),然后inner返回x.之前的值]因为inner并没有执行,就丢失了.).最后等内函数执行完时(x()实际上就相当执行了之前存入list1中的函数引用,因为inner函数最后返回x),x就等于9了.

emm,作业就不展示了,好简单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值