【问题标题】:Global variables not changing from one module to another全局变量不会从一个模块更改到另一个模块
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2017-04-23
    • 2012-12-10
    • 1970-01-01
    相关资源
    最近更新 更多