装饰器闭包
装饰器就是闭包函数的一种应用场景,也是闭包的核心应用场景app
1、什么是装饰器函数
装饰器即为某个对象添加新功能的一种工具,对象能够是任意可调用的对象,目前咱们学习的只有函数对象工具
实现装饰器的方式有多种,可是前提不能修改被装饰对象的源代码以及调用方式。即开放封闭原则学习
开放封闭原则对象
开放封闭指的是对修改封闭,对扩展开放文档
要求在扩展新功能时不能修改源代码,不能修改调用方式。模板
2、装饰器的实现import
装饰器分为无参装饰器和有参装饰器扩展
无参装饰器的模板
def outer(func):
def wrapper(*args,**kwargs):
# 新功能
res = func(*args,**kwargs)
return res
return wrapper
有参装饰器的模板
def big_outer(arg):
def outer(func):
def wrapper(*args,**kwargs):
# 新功能
res = func(*args,**kwargs)
return res
return wrapper
return outer
3、装饰器的语法糖
语法糖就是更简单的书写语法,仅仅是为了简化书写
注意:函数必须先定义后使用因此使用语法糖时必须保证装饰器定义在被装饰函数之上
4、叠加多个装饰器
每一个装饰器都提供了一个扩展的新功能,当咱们要为同一个函数扩展多个新功能时能够为其叠加多个装饰器
执行从上到下
加载从下到上
5、装饰器补充:wraps工具
from functools import wraps
提供了一个装饰器专门用于替换被装饰函数与装饰函数的文档注释