python在不同文件之间共享全局变量方案的探讨
2017-07-07 13:56
627 查看
还是以案例为开头:
最近做的项目中有这么一个需求:A/B/C三个文件,我把B/C中要用到的全局变量,都放在A文件中,这样后面项目大了,全局变量多了的话不至于出现调用混乱的情况。变量的具体值,可以在程序开始运行的时候从配置文件/Redis中读取,这样不至于写死了以后改起来麻烦。假设A中有变量a,我给初始化为0:
然后在B文件中,读取文件中的配置,对变量a赋值:
按照我之前的理解,A.a应该就是在A所在命名空间进行改动,此时A空间中的变量值应该改了才对。
然后我在同一个进程中(见注1),调用了C文件中的函数func_test()
结果我发现a的值竟然还是0。。。
翻阅资料最后得知,我这种跨文件之间的修改,只能通过函数调用这种方式来实现:即在A文件中,添加修改变量的函数,
不能跨文件来进行修改。
注1:python中,不同进程之间不能共享全局变量,在创建进程时,python会把当前存在的全局变量全部copy一份,放进自己的空间中,之后各个进程之间的同名变量不再有任何关系。。各管各的。
最近做的项目中有这么一个需求: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中如何在不同文件间共享全局变量
- python中如何在不同文件间共享全局变量
- [InstallShield]如何在不同的Script文件之间共享全局变量
- (原)python中不同文件之间使用所谓的全局变量
- action里不同方法之间不能共享全局变量的原因分析
- Python 进程之间共享数据(全局变量)
- Python 进程之间共享数据(全局变量)
- python通过配置文件共享全局变量
- 不同系统平台之间(Linux与Linux、Linux与Unix)利用NFS实现文件共享方法
- c语言中全局变量在不同文件中的引用(一)
- python 不同文件中的变量引用
- python实现跨文件全局变量的方法
- Windows XP之间共享文件不能互访问题解决方案
- C/C++多文件共享全局变量时,使用extern的规范
- Python实现在不同Linux主机之间拷贝文件
- IOS APP在不同设备之间共享文件
- 【mfc】不同对话框之间互相操控、全局变量与日期控件
- Python全局变量在模块之间引用的问题
- 多文件之间的全局变量
- 多文件共享全局变量和函数