以编程方式获取python函数参数的描述

时间:2019-04-11 23:54:35

标签: python arguments

假设我具有以下功能:

def get_fullname(first: str, last: str = "Miller"):
    """
    :param first: First name
    :param last: Last name
    :return: Fullname
    """
    return f"{first} {last}"

我知道我可以使用inspect模块来获得有关该函数的大量信息:

import inspect
spec = inspect.getfullargspec(get_fullname)
print(spec)
# FullArgSpec(args=['first', 'last'], varargs=None, varkw=None, defaults=('Miller',), kwonlyargs=[], kwonlydefaults=None, annotations={'first': <class 'str'>, 'last': <class 'str'>})

无论如何,我可以通过编程方式获得这些参数的描述吗?看起来不可能,但只需确保即可。看起来这是specifying types的PyCharm方法。

2 个答案:

答案 0 :(得分:2)

您可以安装和使用docstring_parser

localhost: string(115) 
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 <b>Safari/537.36</b>"

server: string(115) 
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 <b>Safari/CA4C4F</b>"

这将输出:

import docstring_parser

def get_fullname(first: str, last: str = "Miller"):
    """
    :param first: First name
    :param last: Last name
    :return: Fullname
    """
    return f"{first} {last}"

doc = docstring_parser.parse(get_fullname.__doc__)
for param in doc.params:
    print(param.arg_name, param.description)
print(doc.returns.description)

答案 1 :(得分:0)

在函数和类之类的东西上也有内置的.__doc__属性(无需安装额外的模块)。例如:

def get_fullname(first: str, last: str = "Miller"):
    """
    :param first: First name
    :param last: Last name
    :return: Fullname
    """
    return "{first} {last}"
print(get_fullname.__doc__)

收益:

    :param first: First name
    :param last: Last name
    :return: Fullname

不确定这是否是您要查找的内容。这只是直接打印文档字符串,而不像@blhsing的答案那样解析它