调用的装饰器log中,函数wrapper里将now()函数赋值给C,相当于调用了一次now(),再加上最后的日志,而最后返回的是c,一样是now函数
能否写出一个@log的decorator,使它既支持:
@log def f(): pass又支持:
@log('execute') def f(): pass import functools def log(text = ''): def decorator(func): def wrapper(*args, **kw): print '%s end call: %s' %(text, func.__name__) c = func(*args, **kw) print '%s begin call: %s' %(text, func.__name__) return c return wrapper return decorator @log() def now(): pass now()