答案
Topic sourceimport functools def log(text=''): def decorator (func): @functools.wraps(func) def wrapper(args,**kw): print('begin call %s %s'%(text,func.name)) ret=func(args,**kw) print('end call %s %s'%(text,func.name)) return ret return wrapper return decorator @log() def now1(): print('2015-9-3') @log('execute') def now2(): print('2015-9-3') now1() now2()
def log(func): def wrapper(): print('begin call') ret = func() print('end call') return ret return wrapper
@log def now(): print("2015-10-10") return 'wgw'
now=log(now)
a=now() print a
def lognew(p): text='call' if not hasattr(p,"call"): text=p def decorator(func): def wrapper(args,**kw): print("%s %s()" %(text,func.name)) return func(args,**kw) return wrapper if hasattr(p,"_call"): return decorator(p) else: return decorator
@log_new("excute") def now(): print("2015-10-10")
now=log_new("excute")(now)=decorator(now)=wrapper
@log_new def now1(): print("2015-10-11")
now1=log_new(now1)=decorator(now1)=wrapper
now() now1()
def log(text1='begin call', text2='end call'):
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kw):
print('%s %s():' % (text1, func.__name__))
ret = func(*args, **kw)
print('%s %s():' % (text2, func.__name__))
return ret
return wrapper
return decorator
return ret《——这句完全可以删了,没有起作用
now()的内容完全是由ret = func(*args, **kw) 这一句打印出来的
- 1
edwinl
感觉好像这样就可以了,求指点。