三道作业,装饰器有些迷糊了
Topic source#----请编写一个decorator,能在函数调用的前后打印出'begin call'和'end call'的日志。---------------
def monitor(fn): @functools.wraps(fn) def wrapper(args, **kw): print('begin call %s():' % fn.name) print('end call %s():' % fn.name) return fn(args, **kw) return wrapper
#----------------写出一个@log的decorator,使它既支持:@log xxxxxx 又支持@log('excute') xxxx ------------ import functools def log(text=None): def decorator(func): @functools.wraps(func) def wrapper(args, **kw): if(text ) :print('%s %s():' % (text, func.name)) else: print('call %s():' % func.name) return func(args, **kw) return wrapper return decorator
- 1
小羊飞的
#----请设计一个decorator,它可作用于任何函数上,并打印该函数的执行时间:---- import time, functools def metric(fn): @functools.wraps(fn) def wrapper(args, **kw): time_start = time.time() result=fn(args, **kw) time_end = time.time() print('%s executed in %s ms' % (fn.name, str(time_end - time_start))) return result return wrapper