def fun():
i = 1
def foo():
i = i + 1
return i
第二个' i'第4行尚未解决,请说明原因? 谢谢!
答案 0 :(得分:1)
你需要让python知道i
不是foo
的局部变量。默认情况下,如果您在函数中设置变量(就像您在此处使用i = i + 1
),则假定它是本地变量。
所以添加nonlocal i
以声明i
超出此范围,并在其闭包中。
def fun():
i = 1
def foo():
nonlocal i
i = i + 1
return i
# presumably you want to return foo as well ...
return foo
现在,让我们测试一下:
>>> z = fun()
>>> z()
2
>>> z()
3