“ UnboundLocalError:赋值之前引用了本地变量'isrunning'” Idk原因

时间:2019-07-18 18:04:50

标签: python python-3.x pygame

当我运行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为什么会这样。请帮忙。我只希望这个错误消失。

2 个答案:

答案 0 :(得分:1)

在范围内对变量进行赋值时,该变量将成为该范围的局部变量。
我假设您在isrunning范围内对变量redrawgame进行了赋值。例如:

def redrawgame():

    # [...]  

    isrunning = False 

由于isrunningredrawgame范围内是本地的,因此该语句

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()中放全局运行中