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学习网。
上一篇