在Python中导入全局命名空间
假设我有以下文件:
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 里的函数,这样它才能影响全局变量。
我不想使用普通的“import”,而是想用这种方式,“from a import *”
1 个回答
4
使用 from ... import ...
这种方式会把另一个模块里的 引用 复制过来。也就是说,如果你在原来的模块里改变了这个值,它会变成一个新的引用,这样就会导致 a.glo_var
和 b.glo_var
之间的联系永久断开。要么使用一个可以改变的对象并直接修改它,要么每次需要更新的值时都重新导入 a.glo_var
。