对函数进行检测
In [14]: import inspect In [15]: def add(x:int, y:int, *args, **kwargs) -> int: ...: return x + y ...: In [16]: sign = inspect.signature(add) In [17]: type(sign) Out[17]: inspect.Signature In [18]: sign.parameters Out[18]: mappingproxy({'args': <Parameter "*args">, 'kwargs': <Parameter "**kwargs">, 'x': <Parameter "x:int">, 'y': <Parameter "y:int">}) In [19]: sign.return_annotation Out[19]: int In [20]: sign.parameters['x'], type(sign.parameters['x']) Out[20]: (<Parameter "x:int">, inspect.Parameter)
检测是否为函数
是否是类方法
是否是生成器对象
是否是生成器函数
是否是类
是否是模块
In [15]: def add(x:int, y:int, *args, **kwargs) -> int: ...: return x + y ...: In [21]: inspect.ismodule(add) Out[21]: False
是否是内建对象