当我运行Python程序时,它会显示
“ UnboundLocalError:分配前引用了本地变量'isrunning'”。我
不知道为什么会这样。
我什至不知道从哪里开始解决这个问题。
isrunning = True
def redrawgame():
win.blit(bg, (bgX, 0)) # draws our first bg image
win.blit(bg, (bgX2, 0))
if isrunning == True:
win.blit(Run[imagerun],(x, y))
在isrunning
中使用redrawgame()
之前,我已经定义了它,所以IDK为什么会这样。请帮忙。我只希望这个错误消失。
答案 0 :(得分:1)
在范围内对变量进行赋值时,该变量将成为该范围的局部变量。
我假设您在isrunning
范围内对变量redrawgame
进行了赋值。例如:
def redrawgame():
# [...]
isrunning = False
由于isrunning
在redrawgame
范围内是本地的,因此该语句
if isrunning == True:
尝试读取此局部变量,该局部变量目前未定义。这样可以解决错误:
“ UnboundLocalError:分配前已引用本地变量'isrunning'”。
另请参阅Why am I getting an UnboundLocalError when the variable has a value?
要在函数范围内写入全局命名空间中的变量,必须使用global
statement:
isrunning = True
def redrawgame():
global isrunning
win.blit(bg, (bgX, 0)) # draws our first bg image
win.blit(bg, (bgX2, 0))
if isrunning == True:
win.blit(Run[imagerun],(x, y))
# [...]
isrunning = False
现在从全局名称空间中的变量中读取值,并且不再有具有相同名称的局部变量。
答案 1 :(得分:-1)
在redrawgame()
中放全局运行中