Python 全局变量未从各种不同的文件中更改

Python 全局变量未从各种不同的文件中更改,python,pygame,global,Python,Pygame,Global,我正在使用python和pygame模块进行一个项目。为了更好地管理代码,我将项目分为7个文件。因为很难描述包括所有文件在内的问题。我将在下面编写类似情况的代码: (程序从文件4开始) file1.py file2.py file4.py 每当我按下退出按钮,我的程序就结束了,没有任何问题,但每当玩家的生命值降到0以下,程序就不会停止并继续运行。我在if语句中添加了一个print语句,该语句更改了running变量的值,但即使在运行状况变为负值之后,程序仍会继续运行,而running的值也不会更

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

file1.py file2.py file4.py 每当我按下退出按钮,我的程序就结束了,没有任何问题,但每当玩家的生命值降到0以下,程序就不会停止并继续运行。我在
if
语句中添加了一个print语句,该语句更改了running变量的值,但即使在运行状况变为负值之后,程序仍会继续运行,而running的值也不会更改


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

在函数中声明时,
全局运行
创建一个新的
运行
变量,该变量覆盖导入的
运行
。这里要做的是
非本地运行


此外,这也是从不推荐使用
global
的典型原因。使用singleton类可以更安全地实现相同的行为;或者只需导入文件1(在文件2中),然后对文件1进行测试。运行

您只需获得单独的runnung副本。不要使用
import*
建议不要使用显式导入每个成员,而是使用
importfile1
而不是从file1 import*导入
。是的,对于我使用的任何变量,我都必须使用file1.variable。好的,感谢创建一个类似乎是正确的选择
import pygame

running = True
from file1 import *

def game_logic():
    global running
    if player.health <= 0:
        running = False
from file2 import*

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

    game_logic()
from file3 import *

while running:
    game()