当前位置:首页 > 行业动态 > 正文

python 如何显示函数参数

在Python中,我们可以使用内置的inspect模块来显示函数的参数。inspect模块提供了一些函数,可以帮助我们获取关于活动对象,如模块,类,方法,函数,回溯,帧和代码对象的信息。

以下是如何使用inspect模块显示函数参数的步骤:

1、我们需要导入inspect模块。

2、我们可以使用inspect.signature()函数来获取函数的签名,这个函数会返回一个Signature对象,它包含了函数的所有参数信息。

3、Signature对象有一个parameters属性,它是一个有序映射,包含了函数的所有参数,每个参数都是一个Parameter对象。

4、Parameter对象有两个属性:name和default。name是参数的名称,default是参数的默认值,如果参数没有默认值,那么default的值就是Parameter.empty。

5、我们可以使用for循环来遍历所有的参数,并打印出它们的名称和默认值。

下面是一个例子:

import inspect
from inspect import Signature, Parameter
def example_function(param1, param2='default', param3=None):
    pass
获取函数签名
sig = inspect.signature(example_function)
获取参数列表
params = sig.parameters
遍历参数并打印名称和默认值
for name, param in params.items():
    print('Name: ', name)
    print('Default: ', param.default if param.default != Parameter.empty else 'No default')

在这个例子中,我们定义了一个名为example_function的函数,它有三个参数:param1,param2和param3。param2和param3都有默认值,我们使用inspect.signature()函数获取了函数的签名,并使用parameters属性获取了参数列表,我们遍历了参数列表,并打印出了每个参数的名称和默认值。

注意,如果参数有默认值,那么它的默认值会被存储在Parameter.default属性中,如果参数没有默认值,那么它的默认值会被存储在Parameter.empty属性中,我们需要检查参数的默认值是否等于Parameter.empty,来确定它是否有默认值。

我们还可以使用Parameter.annotation属性来获取参数的类型注解,类型注解是Python 3.5引入的新特性,它可以让我们为函数的参数指定预期的类型。

def example_function(param1: int, param2: str, param3: 'Optional[int]' = None):
    pass

在这个例子中,我们为param1指定了类型注解int,为param2指定了类型注解str,并为param3指定了类型注解Optional[int],我们可以使用以下代码来获取参数的类型注解:

import typing as t
获取函数签名
sig = inspect.signature(example_function)
获取参数列表
params = sig.parameters
遍历参数并打印名称、类型注解和默认值
for name, param in params.items():
    print('Name: ', name)
    print('Annotation: ', t.get_type_hints(example_function)[name])
    print('Default: ', param.default if param.default != Parameter.empty else 'No default')

在这个例子中,我们使用了Python的内置模块typing来获取类型注解,我们使用t.get_type_hints()函数来获取函数的类型注解字典,然后从字典中获取参数的类型注解。

0