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'),

 

posted @   小虫虫大虫虫  阅读(6418)  评论(1编辑  收藏  举报
编辑推荐:
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
· ASP.NET Core - 日志记录系统(二)
· .NET 依赖注入中的 Captive Dependency
阅读排行:
· 在外漂泊的这几年总结和感悟,展望未来
· 博客园 & 1Panel 联合终身会员上线
· 支付宝事故这事儿,凭什么又是程序员背锅?有没有可能是这样的...
· https证书一键自动续期,帮你解放90天限制
· 在 ASP.NET Core WebAPI如何实现版本控制?
点击右上角即可分享
微信分享提示