我的理解
Topic sourcedef metricf(fn):
@functools.wraps(fn)
def wrapper(*args, **kw):
start = time.time()
result = fn(*args, **kw)
end = time.time()
print('执行时长:', end - start)
print('执行结果:', result)
return result
return wrapper
请教一下
start = time.time()
result = fn(*args, **kw)
end = time.time()
两个时间中间为什么有一个result = fn(*args, **kw)
这个fn(*args, **kw) 是什么用意呢?
为什么只在开始的时间time.time()后面加这个,end = time.time() 后面为什么不加呢?
- 1
不愿透漏姓名的FYD
@符后面为装饰器函数,将原函数传入装饰器函数返回代理函数,运行原函数实际是在运行代理函数
@log时,log为装饰器函数,将原函数func传入log得到代理函数wrapper,运行func实际是在运行wrapper
@log(text)时,log(text)的返回结果decorator为装饰器函数,将原函数func传入decorator得到代理函数wrapper,运行func实际是在运行wrapper
代理函数wrapper无论增加什么功能必须保证返回结果与原函数func返回结果一致
注:返回为return关键字