所以我使用Python 2.7.15并且在本地范围函数中使用全局变量时遇到了意外错误。我知道我可以在我的函数中使用“gloabl foo”(我知道,不推荐),但我预期的错误不是我期待的行号。
代码按预期工作:
foo = 123
def fooBar():
print foo ### cannot find foo from local scope, checks prev and prints 123
## TEST 2 ##
#foo=987
#print foo
fooBar()
但是当我将代码更改为以下内容时,我希望打印出与测试#1相同的内容,但它会在打印语句中爆炸:
foo = 123
def fooBar():
print foo ### blows up here...
## TEST 2 ##
foo=987
print foo
fooBar()
Traceback (most recent call last):
File "python", line 9, in <module>
File "python", line 4, in fooBar
UnboundLocalError: local variable 'foo' referenced before assignment
我假设它仍会打印'123'然后在我尝试为foo分配另一个值时爆炸。 几乎像Python解释器解析fooBar()并且知道我稍后在本地函数中执行foo的赋值然后在打印上爆炸,而不是抓取全局值?
提前致谢! -Kevin