装饰器有很多经典的使用场景,例如插入日志、性能测试、事务处理等等,有了装饰器,就可以提取大量函数中与本身功能无关的类似代码,从而达到代码重用的目的。
装饰器有两种写法:
1. 装饰器不传参数
2. 装饰器自带参数
第一种,装饰器不传参写法:
def log1(func): @wraps(func) def wrapper(*args, **kw): print('%s():' % func.__name__) return func(*args, **kw) return wrapper # 第一种不带参数的装饰器调用 @log1 def fn1(): print('2017-06-16') print(fn1()) # 执行结果如下: # fn1(): # 2017-06-16