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

Python中是否有内置函数可获取类方法文档字符串的参数名与类型?

提取Docstring中的参数名称与类型

首先明确:Python没有单一的内置函数可以直接提取Docstring里的参数名称和类型,但标准库中的inspect模块加上简单的字符串解析,就能轻松实现你的需求。

你的Docstring采用的是numpy风格的格式,我们可以针对这种格式来解析:

步骤1:导入标准库模块

import inspect

步骤2:获取目标方法的Docstring

你可以用inspect.getdoc()来获取格式化后的Docstring(比直接调用__doc__更干净):

class DB:
    def execute_and_return(self, sql):
        """Execute the query and returns the result as a list of list
        Parameters
        ----------
        sql: str
            Your query
        Returns
        -------
        list"""

# 实例化类(或者直接用类方法)
db = DB()
docstring = inspect.getdoc(db.execute_and_return)

步骤3:解析Docstring中的参数信息

写一个简单的解析函数来提取参数名和类型:

def parse_numpy_params(docstring):
    param_details = {}
    lines = docstring.split('\n')
    # 定位到Parameters部分
    param_start = None
    for idx, line in enumerate(lines):
        if line.strip() == "Parameters":
            param_start = idx + 2  # 跳过分隔线"----------"
            break
    if not param_start:
        return param_details
    # 遍历参数行
    for line in lines[param_start:]:
        line = line.strip()
        if not line or line.startswith("Returns"):
            break  # 遇到Returns部分就停止
        if ":" in line:
            name, type_str = line.split(":", 1)
            param_details[name.strip()] = type_str.strip()
    return param_details

# 调用解析函数
params = parse_numpy_params(docstring)
print(params)  # 输出: {'sql': 'str'}

额外技巧:结合inspect获取参数签名

如果你只是想先拿到参数名称,也可以用inspect.signature()直接获取函数的参数列表,再对应Docstring里的类型:

sig = inspect.signature(db.execute_and_return)
param_names = [param for param in sig.parameters if param != 'self']
print(param_names)  # 输出: ['sql']

需要注意的是,这个解析函数是针对numpy风格的Docstring编写的,如果你的Docstring是Google或reStructuredText风格,解析逻辑需要调整,但核心思路都是定位参数块后提取关键信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:26:09