import functools def log(textOrFun): def decorator(func): @functools.wraps(func) def wrapper(*args, **kw): if isinstance(textOrFun, str): print('%s begin call %s():' % (textOrFun, func.__name__)) else: print('begin call %s():' %func.__name__) func(*args, **kw) print('end call %s' %func.__name__) return return wrapper if isinstance(textOrFun, str): return decorator else: return decorator(textOrFun) @log('test') def now(): print('2015-06-12') now()
请教定义里最后一步何解? else: return decorator(textOrFun)
最后一步相当于把textOrFun作为函数名穿进去
Sign in to make a reply
就是这个葱