装饰器初成
装饰器的初成:
计算代码执行的时间
import time #导入time模块 time.time() #获取当前时间 time.sleep() #让程序再执行到此位置时停一会儿
import time def func(): time.sleep(0.01) print('大家好!') def timmer(f): #装饰器函数 def inner(): strat = time.time() f() #被装饰函数 end = time.time() print(end-start) return inner func = timmer(func) func()
通过闭包函数返回内部函数名,再外部接收
装饰器的作用:
用来实现,不想修改函数的调用方式,但是还想再原来的函数前后增加功能
原则:开放封闭原则
开放:对扩展是开放的
封闭:对修改是封闭的
语法糖:
用@装饰器函数名(@timmer)来代替func = timmer(func)
位置:紧贴着被装饰的函数
装饰器的本质:闭包函数
装饰器的最终形成和固定格式:
装饰器的固定写法
def wrapper(func): #装饰器函数,func是被装饰的函数 def inner(*args,**kwargs): '''在装饰之前要完成的操作''' ret = func(*args,**kwargs) #被装饰是的函数 '''在装饰之后要完成的操作''' return ret return inner
@wrapper #语法糖 相当于 qqxing = wrapper(qqxing)
def qqxing(): #被装饰的函数
print(123)