lap*_*573 0 python module python-module global-variables
我目前正在用 Python 进行一个游戏项目,但我发现自己在 Python 背后的“概念”方面苦苦挣扎,因为我已经习惯了 C 或 Java 等语言。
我曾经试图“鸿沟”我在几个文件中的项目(即称为模块,如果我没有记错,虽然他们都在为我将与C源文件做同样的文件夹中)与不同的主题:objects.py,map.py,rendering.py等。它们包含与这些概念相关的不同类和函数。我有一个main.py包含我所有的“主要”函数(例如new_game等等)以及第一个“调用”,它将调用main_menu.
我还有一个constants.py文件,用于存储常量值。现在问题是,我的游戏中有几个“全局”变量和对象:玩家对象、地图等等。我希望在所有模块中保持这些变量的全局性,并且能够从任何地方访问和修改它们。
我首先创建一个global_variables.py在我列出的所有我的变量文件(如map = None,player = None等),期待通过其他模块进行修改。
问题是,每次我global_variables再次调用 import时,它都会遍历整个代码并将它们全部重新初始化为None,这显然是我不想要的。
我在另一个 stackoverflow 线程上读到一个提示:init()在我的文件中创建一个函数,我将在其中初始化所有变量并将它们声明为全局变量。这样,我调用global_variables.init()一次,然后我可以简单global_variables.player地访问播放器并对其进行修改。
它运行良好,但我觉得它很杂乱。我有很多global foo, 其次是foo = None感觉像是不必要的代码行。此外,当我输入 global_variables 时,IDE 无法“访问”变量。,它不建议将变量作为自动完成,这很痛苦。
那么还有另一种方法吗?这个想法是从任何函数中“声明”变量,以便 IDE 理解它们在那里,但只“初始化”它们一次,这样我就可以避免每次导入global_variables模块时重置它们。
问题是,每次我再次调用 import global_variables 时,它都会遍历整个代码并将它们全部重新初始化为 None,这显然是我不想要的。
不,当您多次导入该模块时,Python 不会重新运行代码。一个模块只执行一次,产生一个模块对象,然后在随后的导入中重用。
因此,为所有程序全局变量使用一个模块是可以的。只需确保导入模块并将其分配回该模块对象上的属性:
import global_variables
global_variables.name = 'Inigo Montoya'
Run Code Online (Sandbox Code Playgroud)
和任何其他导入的模块global_variables将被global_variables.name视为设置为'Inigo Montoya'. 不需要init()功能。
千万不能使用from global_variables import name,因为这将创建一个新的名字name你的模块中,将看不到任何新的价值,如果其他代码重新绑定global_variables.name到不同的值。
| 归档时间: |
|
| 查看次数: |
4764 次 |
| 最近记录: |