获取全局变量的多个版本

时间:2016-05-24 04:06:20

标签: python

我试图使用全局变量,不知怎的,我最终得到了该变量的两个版本。谁能看到这种情况会怎样?

我的简化方案如下所示

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)

1 个答案:

答案 0 :(得分:3)

来自official tutorial

  

虽然某些模块设计为在使用import *时仅导出遵循某些模式的名称,但仍然被认为是生产代码中的不良做法

     

请记住,使用Package import specific_submodule没有任何问题!实际上,这是推荐的表示法,除非导入模块需要使用来自不同包的具有相同名称的子模块。

强调补充。

不建议使用from module import *语法(另请参阅this question)。尝试将每个模块别名化为自己的简洁命名空间:

import b.file1 as f1
import b.file2 as f2