如何将单个全局变量用于多个Python文件

时间:2017-10-17 15:47:35

标签: python-3.x

我在python中制作了一个小游戏,我创建了3个python文件:

第一个文件 vars.py 用于存储全局变量。假设它包含单个变量而不包含任何其他内容:

runGame = True

第二个文件 my_events.py 应处理游戏事件并使用 vars.py

from vars import *

def game_events():

    global runGame
    runGame = False

第三个文件 myGame.py 是一个主要的游戏文件。它包含主游戏循环并使用 vars.py 中的变量:

#I am using this form of import to make it easier to refer to runGame variable
from vars import *
from my_events import game_events

def game_loop():

    global runGame
    while runGame:
        game_events()

game_loop()
quit()

我认为当我运行 myGame.py 时,程序结束,因为 runGame 变量的值在第一个 game_loop()期间变为False 在调用 game_events()时循环。但似乎 myGame.py 中的 runGame my_events.py 中的 runGame 不同。那么如何创建一个对所有3个文件都是全局的变量,当它的值发生变化时,它会影响它们呢?或者这是一个完全错误的方法? (我读到全局变量是邪恶的,但在某些情况下我不知道如何避免它们。)

1 个答案:

答案 0 :(得分:0)

为此,您需要避免使用新值覆盖变量名称。您可以通过导入模块而不是变量来完成此操作。

import vars as v
v.runGame = False

如果您调整代码以专门修改和访问runGame这样的变量,您将获得您期望的“全局变量”行为。否则,当您在文件1中执行赋值时,您只会覆盖该文件中runGame名称的含义,而不是原始变量的含义。