【发布时间】:2017-05-07 19:46:20
【问题描述】:
def some_func(a):
def access_a():
print(a)
access_a()
输出a 的值。但是,如果我想像这样在嵌套函数中更改a:
def some_func(a):
def change_a():
a += 1
print(a)
change_a()
它引发UnboundLocalError 异常。
我知道a是一个非局部变量,但是为什么我可以不声明nonlocal a就访问它呢?
【问题讨论】:
-
你在函数中试过
global a吗? -
这和
global是一样的:你可以访问一个全局变量,但是在没有global var的情况下尝试修改它会失败。 -
不管有什么方法可以解决这个问题,像这样伸出手并导致任意副作用都不是好的编程习惯。
-
...所以你一开始就不应该这样做。
标签: python python-3.x nested python-nonlocal