全局变量不会在不同的文件中更改

问题描述 投票:0回答:1

我正在使用python和pygame模块一起开发项目。我将项目分为7个文件,以进行更好的代码管理。由于很难描述包括所有文件的问题。我将在下面编写类似的情况:(程序从文件4开始)

file1.py

import pygame

running = True

file2.py

from file1 import *

def game_logic():
    global running
    if player.health <= 0:
        running = False

file3.py

from file2 import*

def game():
    global running
    if pygame.key.get_pressed()[K_ESCAPE]:
        running = False

    game_logic()

file4.py

from file3 import *

while running:
    game()

每当我按下escape按钮时,我的程序就结束而没有任何问题,但是,只要播放器的运行状况降至0以下,该程序就不会停止并继续运行。我在if语句内添加了一条print语句,该语句会更改运行变量的值,但是即使运行状况变为负值,程序仍会继续运行,并且runing的值不会更改。

如果有人想要.py文件,请告诉我,我也许会通过电子邮件将其发送给您。

python pygame global
1个回答
0
投票

在函数中声明时,global running创建一个新的running变量,该变量将覆盖导入的running。您在这里不能做的是nonlocal running

而且,这也是通常不建议使用global的原因。使用单例类可以更安全地实现相同的行为;或只是import file1(在file2中),然后在file1.running上进行测试。

© www.soinside.com 2019 - 2024. All rights reserved.