我试图使用全局变量,不知怎的,我最终得到了该变量的两个版本。谁能看到这种情况会怎样?
我的简化方案如下所示
LEFT
我的第一个init.py有
a/
init.py
b/
init.py
file1.py
file2.py
在from b.file1 import *
from b.file2 import *
我file1.py
以及
__all__=[stuff, global_variable]
最后当我这样做时:
global_variable = None
def doit():
global global_variable
global_variable = 1
print("set global variable to %s" %(global_variable))
我看到了
import a
a.doit()
print(a.global_variable)
答案 0 :(得分:3)
虽然某些模块设计为在使用import *时仅导出遵循某些模式的名称,但仍然被认为是生产代码中的不良做法。
请记住,使用Package import specific_submodule没有任何问题!实际上,这是推荐的表示法,除非导入模块需要使用来自不同包的具有相同名称的子模块。
强调补充。
不建议使用from module import *
语法(另请参阅this question)。尝试将每个模块别名化为自己的简洁命名空间:
import b.file1 as f1
import b.file2 as f2