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

如何无需命令行为argparse传递参数?调用main传参是否可行?

完全可行,两种常见实现方式

情况1:原程序依赖sys.argv获取参数

如果你的目标程序(比如program.py)是通过sys.argv读取命令行参数的,典型代码如下:

import sys

def main():
    num1 = int(sys.argv[1])
    num2 = int(sys.argv[2])
    # 示例业务逻辑:计算两数之和
    print(f"结果:{num1 + num2}")

if __name__ == "__main__":
    main()

测试文件(比如test_program.py)可以通过修改sys.argv模拟命令行参数来调用:

import sys
import program

# 模拟命令行传入参数:第一个元素是程序名,后续是实际参数(注意转成字符串)
sys.argv = ["program.py", "10", "20"]
program.main()

情况2:改造原程序让main直接接收参数(更推荐)

如果可以调整原程序的代码,建议把main改成接收参数的形式,这样测试更直观,也更符合单元测试的最佳实践:

修改后的program.py:

import sys

def main(num1, num2):
    # 示例业务逻辑:计算两数之和
    print(f"结果:{num1 + num2}")

if __name__ == "__main__":
    # 命令行运行时,从sys.argv读取并转换参数
    num1 = int(sys.argv[1])
    num2 = int(sys.argv[2])
    main(num1, num2)

对应的测试文件可以直接传递整数参数:

import program

# 直接传入整数调用main函数
program.main(10, 20)

两种方式对比

  • 方式1无需修改原程序,适合快速测试;但依赖修改全局的sys.argv,如果测试用例多可能会有冲突。
  • 方式2代码更清晰,测试更灵活,是长期维护和测试的首选方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:15:32