python装饰器
装饰器是一种修改函数的便捷方式,可以在不改变原函数代码的情况下给函数增加一些新功能,例如日志记录,性能测试等。
1 两层装饰器:
1 def log(func): 2 @functools.wraps(func) 3 def wrapper(*args, **kw): 4 print('call %s():' % func.__name__) 5 print('begin on {}'.format(time.time())) 6 func(*args, **kw) 7 print('end on {}'.format(time.time())) 8 return wrapper
其中functools.wraps是将原函数的属性拷贝到装饰器返回的函数里
2三层装饰器:
1 def log_3(text): 2 def decorator(func): 3 @functools.wraps(func) 4 def wrapper(*args, **kw): 5 print('%s %s():' % (text, func.__name__)) 6 return func(*args, **kw) 7 return wrapper 8 return decorator
当需要向装饰器传递参数时就需要用到三层装饰器