看廖下廖大的装饰器的文档
写了练习代码【设计一个decorator,它可作用于任何函数上,并打印该函数的执行时间】
# -*- coding: utf-8 -*-
import time, functools
def metric(fn):
def wrapper(*args, **kw):
time1=time.time()
ret = fn(*args, **kw)
time2=time.time()
print('%s executed in %.3f s' % (fn.__name__, time2 - time1))
return ret
return wrapper
# 测试
@metric
def fast(x, y):
time.sleep(1.23)
return x + y;
@metric
def slow(x, y, z):
time.sleep(2.1234)
return x * y * z;
f = fast(11, 22)
s = slow(11, 22, 33)
if f != 33:
print('测试失败!')
elif s != 7986:
print('测试失败!' )