signature(callable),获取签名(函数签名抱哈了一个函数的信息,包括函数名,它的参数类型,所在的类和名称空间及其他信息。)
import inspect
def add(x:int,y:int,*args,**kwargs) -> int:
return x + y
sig = inspect.signature(add)
print(sig)
print("params: ",sig.parameters)
print("return : ",sig.return_annotation)
print(sig.parameters["y"])
print(sig.parameters["x"].annotation)
print(sig.parameters["args"])
print(sig.parameters["args"].annotation)
print(sig.parameters["kwargs"])
print(sig.parameters["kwargs"].annotation)
#结果
(x: int, y: int, *args, **kwargs) -> int
params: OrderedDict([('x', <Parameter "x: int">), ('y', <Parameter "y: int">), ('args', <Parameter "*args">), ('kwargs', <Parameter "**kwargs">)])
return : <class 'int'>
y: int
<class 'int'>
*args
<class 'inspect._empty'>
**kwargs
<class 'inspect._empty'>
inspect.isfunction(add) 是否是函数
inspect.ismethod(add) 是否是类的方法
inspect.isgenerator(add) 是否是生成器对象
inspect.isgeneratorfunction(add) 是否是生成器函数
inspect.isclass(add) 是否是类
inspect.ismodule(add) 是否是模块
inspect.isbuiltin(print) 是否是内建函数
inspect模块
parameter对象
- 保存在元组中,是只读的
- name 参数的名字
- annotation 参数的注解,可能没有定义
- default 参数的缺省值,可能没有定义
- empty 特殊的类,用来标记default属性或者注释annotation属性的空值。