dlyyyyyyy 发表于 2020-9-5 14:02:54

闭包

def funX():
    x = 5
    def funY():
      nonlocal x
      x += 1
      return x
    return funY

a = funX()
print(a())
print(a())
print(a())
还是不太能理解为什么这里结果是6,7,8,就算a没有被重新赋值,funx没被释放,但是每次调用的时候x还是被初始化成5了呀?
求大佬解答

sunrise085 发表于 2020-9-5 15:10:04

def funX():
    x = 5
    def funY():
      nonlocal x
      x += 1
      return x
    return funY

a = funX()#x只在这里初始化一次
print(a())#这里执行的是funY,不再执行funX,所以x没有再次初始化为5,下面两行道理一样
print(a())
print(a())
页: [1]
查看完整版本: 闭包