python 跨文件global全局变量设置

model.py

model=None

def load_model():
    global model
    # 定义模型
    model = MaskRCNN(mode='inference', model_dir='./', config=PredictionConfig())
    # 加载模型权重
    model.load_weights(model_path, by_name=True)

def get_model()
    global model
    return model

utils.py

from model import get_model
model = get_model()
#-------
#使用model,函数编写
#------

main.py

from model import load_model
from utils import *
load_model()
#-------
#函数使用
#-------

这里如果直接在utils.py里import model.py 的model参数,因为是在utils.py初始化的时候导入的,此时main.py还没有运行load_model(),model是None,就会导致这个导入的值是None,即使之后main.py运行了load_model(),utils.py里的model也会一直是最初导入的值None,不会改变,从而使utils.py里面编辑的函数都因为model是None而不能正常使用。

所有要在utils.py使用get_model()动态获取model参数,这里获取的model是最新的值,main.py运行load_model()会改变model.py 的全局变量model,但因为utils.py是动态获取,所以会获得最新的model值,从而可以正常使用编辑的函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值