Python第五周 学习笔记(1)
import inspect def check(fn):def wrapper(*args,**kwargs):
sig = inspect.signature(fn)
params = sig.parameters #是orderedDict
values = list(params.values()) #可迭代对象转化成列表,处理后也是有序的
for k,v in enumerate(args): #因为values、args都有序
if values.annotation is not inspect._empty and not isinstance(v,values.annotation):
return '{}`s input is {} type , expected {}'.format(v,type(v),values.annotation)
for k,v in kwargs.items(): #kwargs与params都为字典形式,键值相同
if params.annotation is not inspect._empty and not isinstance(v, params.annotation):
return '{}`s input is {} type , expected {}'.format(k,type(v),params.annotation)
return fn(*args,**kwargs)
return wrapper
@check
def add(x:int,y:int):
return x + y
页:
[1]