全局变量不会从一个模块更改为另一个模块

时间:2020-07-18 20:19:48

标签: python list module global-variables

请问这个问题,请原谅我,但我似乎找不到。

我一直试图(重新)创建一个涉及两个团队的游戏。我用球员名单来代表他们。

我面临的问题是,从一个模块到另一个模块,我不保留全局变量。

这是我项目的树:

Project_Folder
  -- game.py
  -- functions.py
  -- variables.py

variables.py里面有这个:

player_list = []
team_1 = []
team_2 = []

在我的functions.py中:

import random
from variables import *
def init_teams():

    global player_list
    global team_1
    global team_2

    player_list = ["Player1", "Player2", "Player3", "Player4", "Player5"]
    # stuff above is normaly done with inputs and loops, but i symplified it

    for i in range(2):
        team_2.append(player_list.pop(
            random.randrange(len(player_list))))

    team_1 = player_list.copy()
    player_list += team_2

    print(team_1)

最后在main.py中:

from functions import *
init_players()
print("Team 1 : {}, Team 2 : {}, Players : {}".format(
    team_1, team_2, player_list))

当我在函数内打印team_1变量时,我得到了正常结果,但是当我在main.py中执行此操作时,我得到了一个空列表。与player_list变量相同。

我已经使用VS Code在断点处对其进行了检查,发现team_1实际上是从函数更改为主文件(从正常列表到空列表),但是我不知道为什么做到了。

如果您有个好主意,请告诉我我错过了什么,它将为我节省很多搜索工作!

1 个答案:

答案 0 :(得分:1)

global关键字仅在使用的文件中有效。不能用于从另一个文件全局获取价值。