装饰器为原来的函数添加新的功能
def f(foo): def inner(): start = time.time() foo() end = time.time() print(end - start) return inner @f def s(): m = 0 for i in range(100): m = m +i time.sleep(1) return m s() # @f等价于 s = f(s)
如果不加@f,可以这样调用
s = f(s)
s()
是同样的效果
被装饰的函数有参数的情况
#被调用的函数有参数 def f(foo): def inner(*args): start = time.time() foo(*args) end = time.time() print(end - start) return inner @f def s(a,b): time.sleep(1) return a+b s(1,2)