看代码
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 ? 这是为啥呢 本帖最后由 heidern0612 于 2018-12-1 16:13 编辑
因为funx被变量a绑定了,结果并没有释放掉,下次调用的时候会在原有的基础上增加。
如果你只是简单的调用函数,不赋值变量的话,结果始终都是6。
#coding=gbk
def outer(x):
def inner(y):
nonlocal x
x+=y
return x
return inner
a = outer(10)
print(outer(10)(1)) #执行完释放掉
print(outer(10)(3)) #执行完释放掉
print(a (1)) #执行完被变量a绑定,未释放掉。
print(a (3)) #执行完被变量a绑定,未释放掉。
print(a (3)) #执行完被变量a绑定,未释放掉。
heidern0612 发表于 2018-12-1 16:12
因为funx被变量a绑定了,结果并没有释放掉,下次调用的时候会在原有的基础上增加。
如果你只是简单的调 ...
没懂啊 大哥 说简单点 啊 a2421480 发表于 2018-12-1 16:22
没懂啊 大哥 说简单点 啊
看我写的这个课后心得:
戳我前进
页:
[1]