1、计算函数耗时的装饰器
import time from functools import wraps def print_info(f): """ @para: f, 入参函数名称 """ @wraps(f) # 确保函数f名称等属性不发生改变 def info(): print('正在调用函数名称为: %s ' % (f.__name__,)) t1 = time.time() f() t2 = time.time() delta = (t2 - t1) print('%s 函数执行时长为:%f s' % (f.__name__,delta)) return info @print_info def f1(): time.sleep(1.0) @print_info def f2(): time.sleep(2.0) f1() f2()
2、使用wrapt模块编写更加扁平的装饰器
解决问题:
1、实现带参数的装饰器时,层层嵌套的函数特别难写,难读
2、因为函数和类方法的不同,为前者写的装饰器经常没法直接套用参数的装饰器。
人生苦短,我用cnblog