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

如何在Python中从其他脚本访问main函数执行后更新的变量

跨Python脚本获取更新后全局变量的解决方案

问题根因

你当前运行script2输出0有两个核心原因:

  • script1中if __name__ == '__main__'包裹的代码,只有直接运行script1文件时才会执行,当script2导入script1时,这段代码不会触发,addition()函数从未被调用,myValue始终是初始值0。
  • 你用from script1 import myValue的方式导入变量时,对于int这类不可变类型,相当于在script2的命名空间里拷贝了一份初始值,后续script1中myValue的更新不会同步到script2导入的这个变量上。

解决方案

方案1:导入完整模块,主动触发更新

不需要修改script1,仅调整script2的导入逻辑和调用顺序即可:

# script2.py
import script1

def getMyValue():
    # 先调用script1的加法方法更新全局变量
    script1.addition()
    # 直接访问模块属性,可拿到实时更新的数值
    print(script1.myValue)

getMyValue()

运行script2即可输出1。

方案2:调整script1的执行逻辑,全局变量默认初始化

如果你希望不管是直接运行script1,还是被其他脚本导入,myValue都默认初始化为1,可以调整script1的代码:

# script1.py
myValue = 0

def addition():
    global myValue
    myValue += 1

# 将加法调用移出main判断,导入/直接运行时都会执行一次
addition()

if __name__ == '__main__':
    print(myValue)

对应script2调整为:

# script2.py
import script1

def getMyValue():
    print(script1.myValue)

getMyValue()

此时直接运行script1或script2,输出均为1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 06:54:01