场景时这样的,我有个一大堆任务,我要给这些任务计时,,入库。就需要一个带有参数的装饰器来记录任务名称, 在任务执行前和执行之后都需要记录任务当时执行的时刻。
#-*- encoding=utf-8 -*-from functools import wraps:::,taskname# 装饰器传变量给函数taskid = 1summer, funcres = func(taskid, *args, **wkargs)print ‘after task’, taskid, summerreturn funcresreturn return_wrapperreturn func_wrapper:print “testd runing”,taskidreturn “task summer success eg”, []print testd()
执行的结果
liuzhizhi@lzz-rmbp|snmp # python decorators_1.pybefore task testtestd runing 1after summer success eg[]
把中间的print 替换成需要执行的动作就可以完成,响应的功能了,参数在装饰器和被装饰函数之间可以很好的传递。
从此便踏上征途,也许会孤独一程。