您的位置:首页 > 编程语言 > Python开发

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

2017-07-07 13:56 627 查看
还是以案例为开头:

最近做的项目中有这么一个需求: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一份,放进自己的空间中,之后各个进程之间的同名变量不再有任何关系。。各管各的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python