我到目前为止遇到的是最奇怪的错误。我的代码很简单:

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

10-04 10:55