我在Python脚本的开头有几个全局变量,并且有几个类在某些方法中使用这些变量。我想将类保存在单独的文件中并在主脚本中加载它们,但这并没有像我预期的那样工作(因为它在 PHP 中有效)。
问题示例:
main.py (我运行执行的那个)
global_var = 'my global var value'
from myimport import *
print_global()
输出:
I am loaded!
Traceback (most recent call last):
File "import.py", line 3, in <module>
print_global()
File "myimport.py", line 3, in print_global
print(global_var)
NameError: global name 'global_var' is not defined
myimport.py
print('I am loaded!')
def print_global():
print(global_var)
如果我编写指令将所有代码 (*) 导入当前命名空间,为什么函数在单独的模块命名空间中启动,其中global_var被低估,而不是在导入到的名称空间中?
正如我所描述的,进行代码分离的好方法是什么?
我会推荐一种不同的方法,但这会起作用:
global_var = 'my global var value'
from myImport import *
__builtins__.global_var = global_var
全局变量只能在创建它们的模块中访问。你可以让你的函数接受参数并在导入后传递它们。
Python 在本地、封闭、全局和最后内置中查找,因此通过添加 __builtins__.global_var = global_var
变量可用于每个模块。