如果加载的模块依赖于全局变量,那么如何正确地按部分加载Python代码?

如果加载的模块依赖于全局变量,那么如何正确地按部分加载Python代码?,python,import,module,global-variables,Python,Import,Module,Global Variables,在Python脚本的开头,我有几个全局变量,还有几个类在某些方法中使用这些变量。我希望将类保存在单独的文件中,并将它们加载到主脚本中,但这并不像我期望的那样(在PHP中也是如此) 问题示例: 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

在Python脚本的开头,我有几个全局变量,还有几个类在某些方法中使用这些变量。我希望将类保存在单独的文件中,并将它们加载到主脚本中,但这并不像我期望的那样(在PHP中也是如此)

问题示例:

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
main.py(我为执行而运行的一个)

输出:

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
如果我编写指令将所有代码(*)导入当前名称空间,为什么函数在单独的模块名称空间中启动(全局变量定义不足),而不是在导入到的名称空间中启动


正如我所描述的,用Pythonic方法进行代码分离的好方法是什么?

我会推荐一种不同的方法,但这是可行的:

global_var = 'my global var value'
from myImport import *
__builtins__.global_var = global_var
全局变量只能在创建它们的模块中访问。您可以让您的函数接受参数,并在导入后传递它们

Python通过添加
\uuuu内置\uuuu.global\u var=global\u var
该变量可用于每个模块。

以不需要的方式编写代码。在Python中,您可以在模块中定义它,也可以从另一个模块导入它。将它们作为参数传递不是一个好主意,但我正在考虑将所有这些全局变量放在单独的模块中,并使用类将它们导入到我的模块中。这可能会有所帮助:因此,内置变量是一种“超全局变量”,可以在任何导入的模块中看到它?@DaneSoul,如果你
print(\uu内置变量)
你会看到range、zip、len等。。因此,通过添加这些变量,它使变量全局可用,就像zip、range或任何其他内置变量一样,我明白了。但是在那里添加它们不是很糟糕吗?@DaneSoul,就像我在回答中说的那样,我会推荐一种不同的方法,但是在c语言中,变量是全局的,除非你使用static关键字,所以这不是闻所未闻的。如果不确切地知道用例,就很难确切地知道应该推荐什么。
global_var = 'my global var value'
from myImport import *
__builtins__.global_var = global_var