首页 > 解决方案 > “UnboundLocalError:分配前引用的局部变量'isrunning'” Idk 为什么

问题描述

当我运行我的 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 为什么会发生这种情况。请帮忙。我只是想让这个错误消失。

标签: pythonpython-3.xpygame

解决方案


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

def redrawgame():

    # [...]  

    isrunning = False 

由于isrunning在 的范围内是局部的redrawgame,因此该语句

if isrunning == True:

尝试读取此局部变量,此时尚未定义。这会导致错误:

“UnboundLocalError:分配前引用的局部变量‘isrunning’”。

另请参阅为什么当变量具有值时我会收到 UnboundLocalError?

要在函数范围内写入全局命名空间中的变量,您必须使用以下global语句

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 

现在该值是从全局命名空间中的变量中读取的,并且不再有同名的局部变量。


推荐阅读