在代码运行期间动态增加函数功能的方式,称之为“装饰器”(Decorator)。
def log(func): def wrapper(*args, **kw): print ‘call %s():‘ % func.__name__ return func(*args, **kw) return wrapper @log def now(): print ‘2013-12-25‘
def log(text): #带参数版装饰器 def decorator(func): def wrapper(*args, **kw): print ‘%s %s():‘ % (text, func.__name__) return func(*args, **kw) return wrapper return decorator
完整版
import functools def log(func): @functools.wraps(func) def wrapper(*args, **kw): print ‘call %s():‘ % func.__name__ return func(*args, **kw) return wrapper
#functools的作用:把原始函数的__name__
等属性复制到wrapper()
函数中
原文:http://www.cnblogs.com/roronoa-sqd/p/4899284.html