📜  Python – 获取函数签名(1)

📅  最后修改于: 2023-12-03 15:19:06.410000             🧑  作者: Mango

Python - 获取函数签名

在Python中,我们可以使用inspect模块来获取函数的签名。函数签名包括函数名、参数、默认值和文档字符串等信息。通过获取函数签名,可以方便地获取函数的参数信息并进行处理,而不需要手动解析函数定义字符串。

简介

函数签名(Function Signature)是函数的描述,包含函数的名称、参数列表、返回值和参数的默认值等信息。Python提供了inspect模块,可以通过该模块获取Python中所有可调用对象的函数签名(Function Signature)。

代码示例
import inspect
def foo(a: str, b: int = 1, *, c: float = 3.14) -> bool:
    """
    A sample function
    :param a: str
    :param b: int (default 1)
    :param c: float (default 3.14)
    :return: bool
    """
    return True

signature = inspect.signature(foo)

print(signature)

输出:

(a: str, b: int = 1, *, c: float = 3.14) -> bool

此处,我们定义了一个函数foo,包含三个参数。使用inspect.signature函数可以获取函数签名,输出的结果为函数名和参数列表及返回值。

获取参数信息

除了输出函数签名外,我们还可以获取函数的参数信息。inspect模块中的Parameter对象提供了函数参数的详细信息,包括参数名称、默认值、是否为位置参数或关键字参数等。

import inspect
def foo(a: str, b: int = 1, *, c: float = 3.14) -> bool:
    """
    A sample function
    :param a: str
    :param b: int (default 1)
    :param c: float (default 3.14)
    :return: bool
    """
    return True

signature = inspect.signature(foo)

for parameter in signature.parameters.values():
    print(parameter.name, parameter.default, parameter.kind)

输出:

a <class 'inspect._empty'> POSITIONAL_OR_KEYWORD
b 1 POSITIONAL_OR_KEYWORD
c 3.14 KEYWORD_ONLY

此处,我们使用for循环遍历所有参数,获取参数名称、默认值和参数类型等信息。

获取函数文档字符串

文档字符串(docstring)是Python中的一个重要特性,可以通过其中的注释来描述函数的作用、参数及返回值等信息。我们可以使用inspect模块的getdoc函数来获取函数的文档字符串。

import inspect
def foo(a: str, b: int = 1, *, c: float = 3.14) -> bool:
    """
    A sample function
    :param a: str
    :param b: int (default 1)
    :param c: float (default 3.14)
    :return: bool
    """
    return True

docstring = inspect.getdoc(foo)

print(docstring)

输出:

A sample function
:param a: str
:param b: int (default 1)
:param c: float (default 3.14)
:return: bool

此处,我们使用getdoc函数获取函数的文档字符串,输出结果中包括函数的参数信息及返回值等。