假设我有以下文件:
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中的函数,这样会影响全局变量。
我不想使用常规的“导入”,而是以这种方式使用它,“来自导入*”
答案 0 :(得分:4)
使用from ... import ...
从其他模块复制引用。重新绑定原始值会导致其获得新引用,从而永久断开a.glo_var
和b.glo_var
之间的链接。要么使用可变对象并对其进行变异,要么在需要更新值时重新导入a.glo_var
。