在python中导入全局命名空间

时间:2011-06-20 09:50:41

标签: python namespaces

假设我有以下文件:

a.py

glo_var = 0
def func():
    global glo_var
    glo_var = 5
    print "A %d" % (glo_var)

b.py

from a import *
func()
print "B %d" % (glo_var)

如果我运行b.py,则输出为:

A 5
B 0

我的问题是,如何导入全局命名空间,以便输出

A 5
B 5

我需要从b.py调用模块a.py中的函数,这样会影响全局变量。

我不想使用常规的“导入”,而是以这种方式使用它,“来自导入*”

1 个答案:

答案 0 :(得分:4)

使用from ... import ...从其他模块复制引用。重新绑定原始值会导致其获得新引用,从而永久断开a.glo_varb.glo_var之间的链接。要么使用可变对象并对其进行变异,要么在需要更新值时重新导入a.glo_var