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

Python如何从b.py的函数中访问a.py内被追加修改后的var变量

问题根本原因
  • 最核心的误区:Python运行时修改的变量只存在于当前进程的内存中,不会自动改写源代码文件的内容。你运行a.py时更新的var,在a.py进程退出后就消失了,a.py文件里的var = []不会有任何变化,后续b.py导入a.py时自然只能读到初始的空列表。
  • 如果你是分开开两个终端分别运行a.py和b.py,两个进程的内存完全独立,数据不可能互通,这也是你拿不到更新后值的最常见原因。
  • 如果是在同一个进程里运行逻辑,重复导入模块不会生效:Python会缓存所有已经导入过的模块,不管你写多少次import a,都只会第一次导入时执行一次a.py的代码,后续导入都是直接读缓存,不会重新加载更新后的变量值。
新手友好解决方案

不用类,两种场景按需选即可:

场景1:a处理完数据后,b单独运行也能拿到结果

用本地文件做中间存储,a处理完数据后把var的内容存到文件里,b读文件拿数据即可,示例:

# a.py的retrieve_path函数末尾加这几行
import json
with open("data_cache.json", "w", encoding="utf-8") as f:
    json.dump(var, f)
# b.py要拿数据的时候直接读文件
import json
def a_function():
    with open("data_cache.json", "r", encoding="utf-8") as f:
        current_var = json.load(f)
    print(current_var)

场景2:a和b的逻辑在同一个流程里执行

不要分开跑两个脚本,统一用一个启动入口:

  1. 新建main.py作为唯一启动文件:
import a
import b

# 先执行a的逻辑更新var
a.run()
# 再调用b的函数,直接取a.var就能拿到更新后的值
b.a_function()
  1. 调整b.py的写法,不要在顶部提前导入var,用的时候直接取模块的属性即可:
# b.py
import a

def a_function():
    print(a.var)

之后直接运行python main.py即可,所有逻辑在同一个进程里运行,就能正常拿到更新后的变量。

内容的提问来源于stack exchange,提问作者Florea Constantin Cristian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:24:07