python - 使变量全局到python中的多个文件

标签 python global-variables

我想使一个变量成为 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/

相关文章:

javascript - $(document).ready 函数之外的 JS 全局变量和函数

javascript - 为什么我的变量在 Javascript/Jquery 中不能全局使用?

python - 检查字典键和值

python - 为什么这个 Keras Conv2D 层与输入不兼容?

python - 将具有不同数量整数的文本文件读取到多个列表中

python - 在虚拟环境中, "sudo pip"链接到全局 python pip

javascript - 等于函数的变量是否被视为全局变量?

python - 使用装饰器在 try/except 中包装类方法

python - Django 中全局变量的替代方案?

javascript - javascript中的回溯,无法更新全局变量