import functools
def log(text): if isinstance(text, str): def decorator(func): @functools.wraps(func) def wrapper(args, **kw): print('begin call' + text) func(args, kw) print('end call') return wrapper return decorator else: func = text @functools.wraps(func) def wrapper(*args, kw): print('begin call') func(args, *kw) print('end call') return wrapper
@log def now1(): print('call '+ now1.name +"()")
now1() @log('excute') def now2(): print('call '+ now2.name +"()")
now2()
忘了把**kw的星号转义了。改改才不会报错
Sign in to make a reply
很难下定决心用微博的
import functools
def log(text): if isinstance(text, str): def decorator(func): @functools.wraps(func) def wrapper(args, **kw): print('begin call' + text) func(args, kw) print('end call') return wrapper return decorator else: func = text @functools.wraps(func) def wrapper(*args, kw): print('begin call') func(args, *kw) print('end call') return wrapper
@log def now1(): print('call '+ now1.name +"()")
now1() @log('excute') def now2(): print('call '+ now2.name +"()")
now2()