python装饰器

老子叫甜甜 提交于 2020-02-24 16:05:58

原则:

依赖倒置:

开放封闭:对扩展是开发的、对修改是封闭的

 装饰器作用:不想修改函数的调用方式,但是想在原来的函数前后添加功能

装饰器固定模式:

import time

def func():
    time.sleep(0.01)
    print('hello')

def timmer(f): # f也是一个变量 是一个闭包
                # f=>func
    def inner():
        start = time.time()
        f()
        print(time.time()-start)
    return inner

func = timmer(func) # fun = inner
func() # 执行 inner,内存没有消失f = func()

还有带返回值的、带参数的。

 语法糖:

import time
def timmer(f):
    def inner():
        start = time.time()
        f()
        print(time.time()-start)
    return inner
@timmer
def func():
    time.sleep(0.01)
    print('hello')
# func = timmer(func)
func()

有语法糖@timmer()就可以把func = timmer(func)去掉

 背:

首先定义一函数

中间再加一函数

然后要加返回值

修饰函数中间套

语法糖呀真好吃

修饰函数写这里

传参return需注意

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!