简单来说:装饰器是为已经存在的函数或者对象添加额外的功能。本质上是一个闭包函数(闭包函数:本质是个嵌套函数,内层函数引用外层函数的变量并且返回外层函,外层函数返回内层函数)
特点:
1.不修改已有函数的源代码
2.不修改已有函数的调用方式
3.为已有函数添加额外的功能
使用场景:
1.计算函数执行时间,运行次数
2.输出日志信息
3.Flask项目中用于路由传参,浏览器通过url访问到装饰器的路由,从而访问视图函数获得返回的HTML页面
4.事务处理,可以让函数实现事物的一致性
5.缓存处理
6.权限的校验
分类:
1.带参装饰器
2.类装饰器