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

在带自有参数的Python脚本中调用另一脚本并传递原类型参数

解决方案

通过命令行调用Python脚本时,所有传入的参数本质上都是字符串格式,不存在直接跨进程传递原生Python类型的机制,你可以根据自己的场景选择以下两种处理方式:

方案1:在script1中使用参数解析工具自动完成类型转换(推荐)

不需要手动写转换逻辑,用Python标准库argparse即可在定义参数时直接指定类型,解析时自动完成转换,示例代码:

# script1.py 示例
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--num", type=int, help="输入整数参数")
parser.add_argument("--rate", type=float, help="输入浮点数参数")
parser.add_argument("--flag", action="store_true", help="布尔开关参数")
args = parser.parse_args()

# 此处拿到的args.num已经是int类型,args.rate是float,args.flag是bool
print(type(args.num), type(args.rate), type(args.flag))

如果script2是用subprocess调用script1,直接传参即可,不需要额外处理,argparse会自动完成类型转换。

方案2:直接导入script1的业务逻辑调用(适合不需要独立运行script1的场景)

如果你的script1本身就是封装了业务逻辑,可以把核心逻辑抽成函数,script2直接导入调用,此时可以直接传递任意Python原生类型,完全不需要做类型转换,示例:

# script1.py 改造后
def core_logic(num: int, rate: float, flag: bool):
    # 原有业务逻辑写在这里
    print(type(num), type(rate), type(flag))

if __name__ == "__main__":
    # 保留命令行调用的入口,不影响原有使用方式
    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument("--num", type=int)
    parser.add_argument("--rate", type=float)
    parser.add_argument("--flag", action="store_true")
    args = parser.parse_args()
    core_logic(args.num, args.rate, args.flag)
# script2.py 中直接导入调用
from script1 import core_logic

# 直接传原生类型参数即可
core_logic(num=10, rate=0.5, flag=True)

这种方式比跨进程调用性能更好,也不存在类型转换的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 13:42:03