装饰器

装饰器

装饰器是什么?

装饰器的本质就是闭包(就是一个函数)

装饰器作用

可以让其他函数在不需要做任何代码的变动的前提下增加额外的功能

装饰器的返回值也是一个函数的对象,它经常用于切面需求的场景,实现路由传参,flask的路由传参依赖于装饰器,浏览器通过URL访问到装饰器的路由,从而访问视图函数获得返回值的HTML页面

应用场景:

1.可以在外层函数加上时间计算函数,计算函数运行时间;
2.计算函数运行次数;
3.可以用在框架的路由传参上;
4.插入日志,作为函数的运行日志;
5.事务处理,可以让函数实现事务的一致性,让函数要么一起运行成功,要么一起运行失败;
6.缓存,实现缓存处理;
7.权限的校验,在函数外层套上权限校验的代码,实现权限校验;
 
一个简答的装饰器

import time
def time_fun(x):
    pass
    def time_fin():
        time_one=time.time()
        x()
        time.sleep(2)  #停止2秒
        time_two=time.time()
        print(time_two-time_one)
    return time_fin #此处返回的函数不能加括号

@time_fun #语法糖
def sun():
    print("shiian")
sun()

语法糖:
sun=time_fun(sun)

 @装饰器函数==重新定义被装饰函数=装饰器函数(被装饰函数)

 

posted on 2019-01-12 21:25  🐳️南栀倾寒🐳️  阅读(107)  评论(0编辑  收藏  举报

导航