Python insepct 模块 详解

本文详细介绍了Python inspect模块,包括signature函数签名方法、其他相关方法、parameters对象的使用,并通过装饰器的应用示例展示了如何检查用户输入是否符合参数注解要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、signature(callable) 函数签名方法

  • 函数签名包含了一个函数的信息,包括函数名、它的参数类型、它所在的类和名称空间及其他信息
import inspect

def add(x:int, y:int=5, *args, **kwargs) -> int:
    return x + y

print('add.__annotations__ is {}.'.format(add.__annotations__))

sig = inspect.signature(add)
print('sig is {}, type(sig) is {}'.format(sig, type(sig)))
print('sig.parameters is {}'.format(sig.parameters))
print('sig.return_annotation is {}'.format(sig.return_annotation))
for param, _ in sig.parameters.items():
    print('param is {0}, sig.parameters[{0}].annotation is {1}.'.format(param, sig.parameters[param].annotation))
print("=" * 55)
print("sig.parameters['x'] =>", sig.parameters['x'])
print("type(sig.parameters['x']) =>", type(sig.parameters['x']))
print("sig.parameters['y'] =>", sig.parameters['y'])
print('sig.parameters[\'y\'].annotation is {}'.format(sig.parameters['y'].annotation))
print(sig.parameters['args'])
print(sig.parameters['args'].annotation)
print(sig.parameters['kwargs'])
print('sig.parameters[\'kwargs\'].annotation is {}'.format(sig.parameters['kwargs'].annotation))
print(inspect.isfunction(add))
add.__annotations__ is {
   'x': <class 'int'>, 'y': <class 'int'>, 'return': <class 'int'>}.
sig is (x: int, y: int = 5, *args, **kwargs) -> int, type(sig) is <class 'inspect.Signature'>
sig.parameters is OrderedDict([('x', <Parameter "x: int">), ('y', <Parameter "y: int = 5">)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值