python - 多个文件共享全局变量
问题描述:
global关键字可以声明全局变量,但仅限于一个文件中(其他文件可以通过import导入,但修改并不影响原始值)
例如:
f1.py
from test_case.test_base import * gg = 11 class Test_1(TestBase): def test_1(self): global gg gg = 99 print(f'in test1 gg={gg}') class Test_2(TestBase): def test_2(self): print(f'in test2 gg={gg}')
f2.py
from test_case.test_base import * from test_case.f1 import gg class Test_3(TestBase): def test_3(self): print(f'in test3 gg={gg}')
结果如下:
f2.py中导入了全局变量gg,f1.py中修改其值,但f2.py中gg的值并不受影响
解决方案:
若想在不同模块(.py文件)中使用同一个全局变量,可以使用以下方法:专门为全局变量定义一个“全局变量管理模块”
1. 全局变量管理模块(globalVar.py)
def _init(): """ 初始化 """ global _global_dict _global_dict = {} def set_value(key,value): """ 定义一个全局变量 """ _global_dict[key] = value def get_value(key,defValue=None): """ 获得一个全局变量,不存在则返回默认值 """ try: return _global_dict[key] except KeyError: # 查找字典的key不存在的时候触发 return defValue
2. 设置全局变量(a.py)
from common import globalVar as gl # 初始化全局变量,只在main模块初始化一次即可 gl._init() # 为全局变量赋值 gl.set_value('verifyCode', verifyCode) gl.set_value('verifyId', verifyId)
3. 使用全局变量(b.py)
from common import globalVar as gl gl.get_value('verifyId'), gl.get_value('verifyCode'),
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
· ASP.NET Core - 日志记录系统(二)
· .NET 依赖注入中的 Captive Dependency
· 在外漂泊的这几年总结和感悟,展望未来
· 博客园 & 1Panel 联合终身会员上线
· 支付宝事故这事儿,凭什么又是程序员背锅?有没有可能是这样的...
· https证书一键自动续期,帮你解放90天限制
· 在 ASP.NET Core WebAPI如何实现版本控制?