闭包
只要a没有被赋值funX的值就没有被释放 这个的释放是什么意思 本帖最后由 jackz007 于 2020-11-9 14:26 编辑def funX():
x = 5 # 这个 x
def funY():
nonlocal x# 这个 x
x += 1 # 这个 x
return x # 这个 x
所谓“没有被释放”指的是:在语句
a = funX()
被执行过后,函数 funX() 的局部变量 x 会在下面的语句
print(a())
print(a())
print(a())
被执行的过程中一直保持存在(函数调用过后,x 的值一直保持,下一次调用时,上一次的值还在)
在这种关系中,x 是和 a 绑定的,只要 a 不消失,x 的值就会一直被保持,只要考察一下下面的代码就可以更加清楚:
def funX():
x = 5
def funY():
nonlocal x
x += 1
return x
return funY
a = funX()
b = funX()
c = funX()
print('-b =' , -b())
print('a = ', a())
print('a = ', a())
print('a = ', a())
print('-b =' , -b())
print('-b =' , -b())
print('-b =' , -b())
print('a = ', a())
print('c = ', c())
print('c = ', c())
页:
[1]