全局变量不会从各种不同的文件中改变[重复]。

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

我正在用python和pygame模块做一个项目。为了更好的管理代码,我把项目分成了7个文件。由于很难描述包括所有文件在内的问题,所以我把类似的情况编码如下:(程序从文件4开始)。我把类似的情况代码如下:(程序从文件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()

每当我按 逃避 我的程序结束时没有任何问题,但是,每当玩家的健康值低于0时,程序就不会停止,而是继续运行。我在程序的 if 语句,它改变了运行变量的值,但即使在健康值变为负值后,程序仍在继续运行,而运行的值没有改变。

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

python pygame global
1个回答
1
投票

当在函数中声明。global running 创建一个新的 running 变量,覆盖导入的 running. 你要做的是 nonlocal running.

此外,这也是典型的原因 global 绝不推荐使用。你可以使用单人类更安全地实现同样的行为;或者只使用 import file1 然后在 file1.running.

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