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 @ 2021-03-08 16:52  小虫虫大虫虫  阅读(5913)  评论(1编辑  收藏  举报