无参装饰器
1.开放封闭原则
软件一旦上线后,就应该遵循开放封闭原则,即对修改源代码是封闭的,对功能的扩展是开放的。
原则如下:
1.不修改源代码
2.不修改调用方式
目的:在遵循1和2原则的基础上扩展新功能。
2.什么是装饰器?
器指的是工具,装饰指的是被装饰对象添加新功能
完整含义:装饰器即在不修改被装饰对象源代码与调用方式的前提下,为被装饰对象添加新功能,装饰器与被装饰的对象均可以是任意可调用的对象。
装饰器----->函数
被装饰的对象---->函数
import time def index(): time.sleep(1) print('welcome to index page') return 123 def home(name): time.sleep(2) print('welcome %s to home page'%name) def timmer(func): def wrapper(*args,**kwargs): start_time=time.time() res=func(*args,**kwargs) stop_time=time.time() print(stop_time-start_time) return res return wrapper index=timmer(index) home=timmer(home) index() home('egon') 装饰器语法糖 比喻: import time def timmer(func): def wrapper(*args,**kwargs): start_time=time.time() res=func(*args,**kwargs) stop_time=time.time() print(stop_time-start_time) return res return wrapper #在被装饰对象正上方单独一行,而我们编写的装饰器必须在此语法的上方 @timmer #index=timmer(index) def index(): time.sleep(1) print('welcome to index page') return 123 index()
有参装饰器:
def auth(engine):#(接收参数)
def auth2(func):#(接收函数)
def wrapper(*args,**kwargs):#(执行目标函数)