我到目前为止遇到的是最奇怪的错误。我的代码很简单:
wtf = 5
def update():
print(wtf)
wtf = 1
update()
注释掉
# wtf = 1
行,一切正常,并打印5。但是,如果取消注释# wtf = 1
,甚至在打印出wtf
(5)之前,我都会得到一个UnboundLocalError: local variable 'wtf' referenced before assignment
。我不知道WTF会在这里发生。为什么会这样呢? 最佳答案
如果有可能在范围内分配变量,则该变量将成为该范围的局部变量。您可以通过在全局变量中使用global
或在Python 3中将任何非本地变量用于nonlocal
来防止该行为:
wtf = 5
def update(dt):
nonlocal wtf
print(wtf)
wtf = 1