from inspect import signature
def typeassert(*args, **kwargs):
def decorator(fun):
sig=signature(fun)
btypes=sig.bind_partial(*args,**kwargs).arguments
def wrapper(*funargs,**funkwargs):
for name,stype in sig.bind_partial(*funargs,**funkwargs).arguments.items():
if name in btypes:
if not isintance(stype, btypes[name]):
raise TypeError("'%s' must be '%s'"%(name,btypes[name]))
return fun(*funargs,**funkwargs)
return wrapper
return decorator
@typeassert(int,str)
def myFun(a,b):
print(a,b)
myFun(12,"12")
python3 带参数的装饰器,函数参数类型检查
最新推荐文章于 2022-09-07 17:32:22 发布