python带参数的装饰器怎么写?
发布时间:2024-09-04 20:05:48

1、装饰器说明
装饰看起来没有参数(使用) @ 将装饰方法作为隐藏参数传递给装饰器)。但有时让装饰带来一些参数,可以提供更灵活的应用。
2、实例
我们改写 requires_ints,装饰函数的参数数量也可以限制:
fromfunctoolsimportwraps
defrequires_ints(count=0):
defdecorator(func):
@wraps(func)
defwrapper(*args,**kwargs):
values=[iforiinkwargs.values()]
args_list=list(args)+[iforiinkwargs.values()]
ifcount==0:
#Notlimit
pass
eliflen(args_list)>count:
raiseException(f'Thenumberofargumentscannotmorethan{count}')
forarginargs_list:
ifnotisinstance(arg,int):
raiseTypeError('Onlyacceptintegers.')
returnfunc(*args,**kwargs)
returnwrapper
returndecorator
@requires_ints(5)
defadd(*args):
'''Returnthesumofallarguments'''
returnsum(args)以上是python带参数装饰器的写法,希望对大家有所帮助,python学习网了解更多知识。
