1,什么是装饰器
装饰器指的是为被装饰对象添加新功能的工具
装饰器本身可以是任意可调用对象
被装饰对象本身也可以是任意可调用对象
2,为何要用装饰器
开放封闭原则:对修改封闭,对扩展开放
装饰器的实现原则:
1),不能修改被装饰对象的源代码
2),不能修改被装饰对象的调用方式
装饰器的目的:
就是在遵循原则1和2的掐前提为被装饰对象添加新功能
import time def outer(func): def wrapper(*args,**kwargs): start = time.time() res=func(*args,**kwargs) stop = time.time() print('this process run %s' % (stop - start)) return res return wrapper @outer def index(): time.sleep(.5) print('hello') index()
装饰器模板
def outer(func): def wrapper(*args,**kwargs): res=func(*args,**kwargs) return res return wrapper
装饰器语法糖:
在被装饰对象正上方,并且单独一行写上@装饰器名(将下方函数名当做参数传给装饰器名,返回值赋给下方函数名)