import inspect
defadd(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">)