【发布时间】:2020-07-18 20:19:48
【问题描述】:
如果有人问过这个问题,请原谅我,但我似乎找不到。
我一直在尝试(重新)创建一个包含两个团队的游戏。我用球员名单来代表他们。
我面临的问题是从一个模块到另一个我没有保留我的全局变量。
这是我的项目树:
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 实际上正在从函数更改(从普通列表到空列表)到主文件,但我不知道为什么会这样.
如果您有任何想法,请告诉我我错过了什么,这样可以节省我大量的搜索时间!
【问题讨论】:
-
使用
global在当前模块范围内重新声明这个变量。只需删除这 3 行。 -
您好像不明白
global关键字的用法。请参阅this answer 以获得很好的解释。
标签: python list module global-variables