python在不同文件之间共同使用全局变量

作者: superstar 发表于 Aug. 11, 2017, 11:04 a.m. 类别: 技术-原创 标签: python

python在不同文件之间共同使用全局变量方案的探讨

还是以案例为开头:

最近做的项目中有这么一个需求:A/B/C三个文件,我把B/C中要用到的全局变量,都放在A文件中,这样后面项目大了,全局变量多了的话不至于出现调用混乱的情况。变量的具体值,可以在程序开始运行的时候从配置文件/Redis中读取,这样不至于写死了以后改起来麻烦。假设A中有变量a,我给初始化为0:

a = 0

然后在B文件中,读取文件中的配置,对变量a赋值:

import A
A.a = 100

按照我之前的理解,A.a应该就是在A所在命名空间进行改动,此时A空间中的变量值应该改了才对。

然后我在同一个进程中(见注1),调用了C文件中的函数func_test()

import A
def func_test():
    print A.a

结果我发现a的值竟然还是0。。。

翻阅资料最后得知,我这种跨文件之间的修改,只能通过函数调用这种方式来实现:即在A文件中,添加修改变量的函数,

def change_params(x):
    a = x

不能跨文件来进行修改。

注1:python中,不同进程之间不能共享全局变量,在创建进程时,python会把当前存在的全局变量全部copy一份,放进自己的空间中,之后各个进程之间的同名变量不再有任何关系。。各管各的。