作业1:
#设计一个decorator,它可作用于任何函数上,并打印该函数的执行时间: import time,functools def metric(fn): @functools.wraps(fn) def wrapper(*args,**kw): s_time = time.time() #记录开始时间 f = fn(*args,**kw) #开始执行函数 (f = func是换名字,f = func()为执行右侧函数) e_time = time.time() #记录结束时间 print('%s excuted in %s ms'%(fn.__name__,e_time-s_time)) return f return wrapper
作业2:
import functools def log(fn): if callable(fn): #判断fn是否为函数,若为函数: @functools.wraps(fn) def decorator(*args,**kw): print("begin call") start1 = fn(*args,**kw) #执行函数 print("end call") return start1 #只有return fn(*args,**kw)才会执行函数 return decorator else: #判断fn是否为函数,若不是函数: def wrapper(func): @functools.wraps(func) def decorator(*args,**kw): print("begin call") start2 = func(*args,**kw) #执行函数 print("end call") return start2 return decorator return wrapper
Sign in to make a reply
陳大發的小红豆
作业1:
作业2: