python - 在函数上下文中设置全局变量的值会引发 UnboundLocalError?

标签 python

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

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

另请参阅this question about Python scoping rules .

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

相关文章:

python - 在Python中使用Structure和char数组

python - 过滤 os.walk() 目录和文件

python - 如果存在子字符串,则从元组中删除项目

python - pandas:检查空值:按行应用此函数我做错了什么?

python - 如何为多人游戏的赢/输报告组织 MySQL 表

javascript - HTML/Chart JS 从 Python Flask 反序列化 JSON

python - 如何格式化日志以便它们按列打印出来?

python - django在gae(谷歌应用引擎)中是否有类似 'render_template'的方法

python - 在 C 中使用 Python

python - 节俭 python - TApplicationException : Invalid method name