You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python的mod2.py中动态访问mod1.py内的全局变量?

如何在mod2.py中动态访问mod1.py的全局变量

刚好你已经搞定了跨模块全局变量的基础设置,那接下来实现动态访问其实就几个实用的路子,我给你拆解清楚:

1. 直接导入模块实时引用

这是最直接的方式,Python里模块导入后是引用式关联,每次访问模块里的全局变量都会取到当前的最新值。

举个实际例子:
mod1.py的代码:

# mod1.py
# 定义全局变量
global_var = "初始值"

# 用于更新全局变量的函数(注意要用global声明)
def update_global_var(new_value):
    global global_var
    global_var = new_value

mod2.py里直接导入模块访问:

# mod2.py
import mod1

# 第一次获取初始值
print(mod1.global_var)  # 输出:初始值

# 调用mod1的函数更新变量后,再次访问就是最新值
mod1.update_global_var("我是更新后的新值")
print(mod1.global_var)  # 输出:我是更新后的新值

只要你在mod1里正确用global声明修改全局变量,mod2里每次访问mod1.global_var都会拿到动态更新后的结果。

2. 用可变对象封装全局状态

如果你的全局变量是不可变类型(比如字符串、数字、布尔值),直接重新赋值会创建新对象,担心不小心断开引用的话,可以把变量放在可变对象里(比如字典、列表),这样修改内部元素时不会改变引用关系。

例子如下:
mod1.py:

# mod1.py
# 用字典存储全局状态
global_state = {"current_value": "初始状态"}

def update_state(new_val):
    # 直接修改字典的value,不需要global声明
    global_state["current_value"] = new_val

mod2.py:

# mod2.py
from mod1 import global_state

print(global_state["current_value"])  # 输出:初始状态
mod1.update_state("动态更新的状态")
print(global_state["current_value"])  # 输出:动态更新的状态

你也可以用自定义类的静态属性来封装,效果类似,还能更清晰地管理多个全局变量:

# mod1.py
class GlobalConfig:
    app_name = "默认名称"
    version = "1.0.0"

def update_app_name(new_name):
    GlobalConfig.app_name = new_name
# mod2.py
from mod1 import GlobalConfig

print(GlobalConfig.app_name)  # 输出:默认名称
mod1.update_app_name("新应用名称")
print(GlobalConfig.app_name)  # 输出:新应用名称

3. 通过getter函数封装访问逻辑

如果需要对全局变量的访问做额外控制(比如返回前做格式校验、计算衍生值),可以在mod1里写专门的getter函数,mod2通过调用函数来动态获取最新值。

mod1.py:

# mod1.py
# 用下划线标记为“私有”变量,避免直接修改
_global_var = "初始值"

def get_global_var():
    # 这里可以加自定义逻辑,比如返回前转大写
    return _global_var.upper()

def set_global_var(new_val):
    global _global_var
    # 也可以在修改前加校验逻辑
    if isinstance(new_val, str):
        _global_var = new_val

mod2.py:

# mod2.py
import mod1

print(mod1.get_global_var())  # 输出:初始值(转大写后)
mod1.set_global_var("动态更新的内容")
print(mod1.get_global_var())  # 输出:动态更新的内容(转大写后)

这种方式能让全局变量的访问和修改都经过统一入口,更安全也更易维护。


内容的提问来源于stack exchange,提问作者JTron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:21:50