也许今天早上我的咖啡不够浓,但是这种行为现在使我感到困惑:

>>> 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


(请注意,是在print a而不是func2()中引发错误的是a = 'bar'语句。)

有人可以告诉我这是怎么回事吗?

最佳答案

因为a是在func2内部设置的,所以Python假定它是一个局部变量。在global a语句之前放置print声明:

def func2():
    global a
    print a
    a = 'bar'


另请参见this question about Python scoping rules

关于python - 在函数的上下文中设置全局变量的值会引发UnboundLocalError?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5354911/

10-12 16:42