📅  最后修改于: 2023-12-03 15:19:06.410000             🧑  作者: Mango
在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函数获取函数的文档字符串,输出结果中包括函数的参数信息及返回值等。