Python 为什么在while循环中将变量设置为false会导致错误,而不是停止循环

Python 为什么在while循环中将变量设置为false会导致错误,而不是停止循环,python,python-3.x,Python,Python 3.x,我正在创建我的第一个Python游戏,我尝试了暂停/取消暂停游戏功能。我创建了一个全局pause变量,通过声明将其设置为false。但当我按下分配给暂停功能的按钮时,程序会显示以下错误: 赋值前引用的局部变量“暂停” 下面是按钮的paused()功能分配: if event.key == pygame.K_p: pause = True paused() 下面是我的paused()函数: def paused(): while pause: fo

我正在创建我的第一个Python游戏,我尝试了暂停/取消暂停游戏功能。我创建了一个全局
pause
变量,通过声明将其设置为
false
。但当我按下分配给暂停功能的按钮时,程序会显示以下错误:
赋值前引用的局部变量“暂停”

下面是按钮的
paused()
功能分配:

if event.key == pygame.K_p:
    pause = True
    paused()
下面是我的
paused()
函数:

def paused():  

while pause:        

    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_m:
                pause = False


    pygame.display.update()
    clock.tick(15)          
    #gameDisplay.fill(white)   `

pause
是main的局部变量,因此有必要将其发送到函数。此外,还有一些识别错误。以下是固定版本:

if event.key == pygame.K_p:
    pause = True
    paused(pause)

def paused(pause):  

    while pause:        

        for event in pygame.event.get():
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_m:
                    pause = False


        pygame.display.update()
        clock.tick(15)          
        #gameDisplay.fill(white)   `

缩进很重要。您的已关闭。您需要阅读有关作用域的内容-您的局部变量在其他函数中不为人所知。为什么不说
,而说True:
我通常找不到一个很好的理由来卷积布尔值,因为您不喜欢它的名称。函数
paused()
应该足以指示正在发生的事情,从而不会将布尔值分配给变量。您可以将
pause
变量传递给
paused
函数,否则必须在
paused
中声明
全局暂停