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

如何通用查询Python方法所需的必选参数数量

统计Python可调用对象必选参数个数的通用方案

核心依赖Python标准库的inspect模块解析可调用对象的签名,过滤非必选参数后统计数量即可,无需额外安装第三方依赖。

实现步骤

  • 导入inspect模块,获取目标方法、类、函数的签名对象
  • 遍历签名中的所有参数,跳过类实例化/实例方法自动传入的self、类方法自动传入的cls参数
  • 筛选出没有配置默认值、不属于可变位置参数*args、不属于可变关键字参数**kwargs的参数,这类参数就是调用时必须传入的必选参数
  • 统计符合要求的参数总数,即为所求结果

通用实现代码

import inspect
from typing import Callable

def count_required_params(callable_obj: Callable) -> int:
    signature = inspect.signature(callable_obj)
    required_cnt = 0
    for param_name, param in signature.parameters.items():
        # 跳过自动绑定的类/实例隐式参数
        if param_name in ("self", "cls"):
            continue
        # 排除有默认值的参数、可变参数
        if (param.default is inspect.Parameter.empty
            and param.kind not in (
                inspect.Parameter.VAR_POSITIONAL,
                inspect.Parameter.VAR_KEYWORD
            )):
            required_cnt += 1
    return required_cnt

针对示例场景的验证结果

针对问题中给出的queue.PriorityQueue场景,调用上述函数计算:

import queue

# 查询PriorityQueue实例化需要的必选参数个数
res = count_required_params(queue.PriorityQueue)
print(res)

运行输出结果为0,即data_queue = queue.PriorityQueue()对应的实例化调用,不需要传入任何必选参数,和示例中无参调用的写法一致。

特殊情况说明:C语言实现的Python内置对象部分无法通过inspect提取完整签名,这类场景需要结合官方文档确认参数要求,所有纯Python实现的函数、方法、类都可以通过上述方案得到准确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:21:27