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

本文通过实例探讨了Python中跨文件修改全局变量的问题,并提出了正确的实现方式。文章指出直接跨文件修改变量会导致值未更新的现象,并说明了不同进程间全局变量不共享的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

还是以案例为开头:

最近做的项目中有这么一个需求: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一份,放进自己的空间中,之后各个进程之间的同名变量不再有任何关系。。各管各的。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值