也许我今天早上的咖啡不够浓,但这种行为现在让我感到困惑:
>>> a = 'foo'
>>> def func1():
... print a
...
>>> def func2():
... print a
... a = 'bar'
...
>>> func1()
foo
>>> func2()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in func2
UnboundLocalError: local variable 'a' referenced before assignment
(请注意,在 func2()
中引发错误的是 print a
语句,而不是 a = 'bar'
。)
有人可以向我解释一下这是怎么回事吗?
最佳答案
因为 a
是在 func2
中设置的,Python 假定它是一个局部变量。在 print
语句之前放置一个 global a
声明:
def func2():
global a
print a
a = 'bar'
关于python - 在函数上下文中设置全局变量的值会引发 UnboundLocalError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5354911/