我想使一个变量成为 2 个以上文件的全局变量,以便在任何文件中的操作反射(reflect)在包含该变量的文件中。
我正在做的是:
b.py
import a
x = 0
def func1():
global x
x = 1
if __name__ == "__main__":
print x
func1()
print x
a.func2()
print x
a.py
import b
def func2():
print b.x
b.x = 2
我在这里搜索线程,发现 from a import *
正在制作副本,而 import a
则不然。我希望上面的代码在执行 python b.py
时打印 0 1 1 2
(确保它应该在新行中)但它显示 0 1 0 1
如何实现它?
最佳答案
首先让我说我认为像这样的全局变量(使用 global 关键字)是邪恶的。 但重组它的一种方法是将全局变量放入单独模块中的类中,以避免循环导入。
a.py
from c import MyGlobals
def func2():
print MyGlobals.x
MyGlobals.x = 2
b.py
import a
from c import MyGlobals
def func1():
MyGlobals.x = 1
if __name__ == "__main__":
print MyGlobals.x
func1()
print MyGlobals.x
a.func2()
print MyGlobals.x
c.py
class MyGlobals(object):
x = 0
输出
$ python b.py
0
1
1
2
关于python - 使变量全局到python中的多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8814316/