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

如何从命令行调用Python文件中未在main代码块的独立函数?

解决Python脚本从命令行指定调用函数的问题

这问题我之前调试脚本时也踩过坑!你现在的脚本完全没处理命令行传入的参数,所以不管你在命令行加say还是其他参数,它都会按原来的逻辑执行——先跑sum(10,9),再调用final()。要实现从命令行指定调用函数,咱们得改改脚本逻辑:

核心思路

  1. 导入sys模块,用来获取命令行传入的参数
  2. 在if __name__ == "__main__"代码块里,读取传入的函数名参数
  3. 根据参数匹配对应的函数并执行,同时处理参数错误的情况

修改后的完整代码

import sys

def sum(a, b):
    print(a + b)

def say():
    print("Yes!!!")

def final():
    print("Hello")

# 原来的sum(10,9)如果不需要默认执行,可以注释掉或者移到条件块里
# sum(10, 9)

if __name__ == "__main__":
    # 检查是否传入了函数名参数
    if len(sys.argv) < 2:
        print("请指定要调用的函数名:say/final/sum")
        sys.exit(1)
    
    func_name = sys.argv[1]
    # 从全局命名空间获取函数对象
    try:
        func = globals()[func_name]
        # 针对不同函数处理参数需求
        if func_name == "sum":
            if len(sys.argv) != 4:
                print("sum函数需要两个数字参数:python test.py sum 10 9")
                sys.exit(1)
            a = int(sys.argv[2])
            b = int(sys.argv[3])
            func(a, b)
        else:
            # say和final不需要参数,直接调用
            func()
    except KeyError:
        print(f"不存在名为{func_name}的函数,请检查输入")
        sys.exit(1)

测试效果

  • 调用say函数:python test.py say,输出Yes!!!
  • 调用final函数:python test.py final,输出Hello
  • 调用sum函数:python test.py sum 10 9,输出19
  • 没传参数或传错函数名:会给出友好提示

补充说明

如果你不想移除原来默认执行的sum(10,9),可以把它放到无参数传入的分支里,这样脚本既保留原有功能,又支持指定函数调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:39:22