python一版20讲课后作业,关于闭包的问题
def funX():x = 5
def funY():
nonlocal x
x += 1
return x
return funY
a = funX()
print(a())
print(a())
print(a())
请问这段代码里,为何x不会初始化为5啊?执行到a = funX()这部分时候内部是个什么状态呢?
‘当 a = funX() 的时候,只要 a 变量没有被重新赋值,funX() 就没有被释放,也就是说局部变量 x 就没有被重新初始化。’
小甲鱼的这句话不太理解。 本帖最后由 风扫地 于 2019-6-27 11:50 编辑
a = funX()# 执行完这一句 x==5了
print(a())# 执行完这一句 x==6了输出6(a未被释放,x将保留上一次计算的值
print(a())# 执行完这一句 x==7了 输出7
print(a())# 执行完这一句 x==8了 输出8.
没有重新初始化的意思,就是x=5这这句话没被重复执行。 风扫地 发表于 2019-6-27 11:47
a = funX()# 执行完这一句 x==5了
print(a())# 执行完这一句 x==6了输出6(a未被释放,x将保留上一 ...
哦,这样啊,谢谢啦 funX赋给a了
然后print(a())相当于调用了funX里的funY
是这样吗?
页:
[1]