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

Python主程序与脚本间双向传参及返回值实现方法

Python跨脚本传参与返回值接收实现方案

原有代码问题梳理

  • 语法使用错误:scriptNo1[arg1, arg2]是字典/列表的下标访问语法,模块对象不支持该方式传参
  • 逻辑错误:手动修改sys.argv无法给已导入的模块传参,且代码中传入的是字符串'arg1'/'arg2',并非实际变量值
  • 作用域错误:scriptNo1.py中直接使用arg1/arg2变量,这两个变量未在该脚本的作用域内定义,导入时会直接触发NameError
  • 执行逻辑错误:模块顶层代码仅在第一次被import时执行一次,后续修改参数无法触发重新计算

标准实现方式(推荐)

Python跨脚本调用的标准做法是在被调用脚本中封装可调用的函数,通过函数传参、return返回值实现双向数据交互,无需依赖全局变量或命令行参数。

1. 被调用脚本 scriptNo1.py

# Script Program to be used by Main Program
def calc_sum(a, b):
    print("Start Script program")
    pass_back_val = a + b
    print("passBackVal in script is: ", pass_back_val)
    print("End of Script program")
    return pass_back_val

2. 主程序 main.py

# Main Program
import scriptNo1

print("Start Main program")
arg1 = 3
arg2 = 5
# 调用模块内函数传参,直接接收返回值
val1 = scriptNo1.calc_sum(arg1, arg2)
print(arg1, arg2, val1)
print("The end")

运行主程序即可得到预期输出:

Start Main program
Start Script program
passBackVal in script is:  8
End of Script program
3 5 8
The end

兼容命令行单独运行的扩展写法

如果需要scriptNo1.py既可以被主程序导入调用,也可以单独作为脚本通过命令行传参运行,可增加__name__判断,修改后的scriptNo1.py如下:

# Script Program to be used by Main Program
import sys

def calc_sum(a, b):
    print("Start Script program")
    pass_back_val = a + b
    print("passBackVal in script is: ", pass_back_val)
    print("End of Script program")
    return pass_back_val

if __name__ == "__main__":
    # 仅当直接运行该脚本时,才读取命令行参数执行
    arg1 = int(sys.argv[1])
    arg2 = int(sys.argv[2])
    calc_sum(arg1, arg2)

该写法下,直接在终端执行python scriptNo1.py 3 5也可正常得到计算结果,被导入时不会自动执行命令行读取逻辑,不会触发报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:18:19