Discuss / Python / 三道作业,装饰器有些迷糊了

三道作业,装饰器有些迷糊了

Topic source

小羊飞的

#1 Created at ... [Delete] [Delete and Lock User]

#----请设计一个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

小羊飞的

#2 Created at ... [Delete] [Delete and Lock User]

#----请编写一个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

Reply