python帶參數的裝飾器怎么寫?
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學習教程請關注IT培訓機構:千鋒教育。