python装饰器

 

装饰器为原来的函数添加新的功能

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)

 

posted @ 2020-05-31 16:36  乔乔新  阅读(90)  评论(0编辑  收藏  举报