python笔记11—day11
1、装饰器
import time#模块 print(time.time())#获取当前时间 time.sleep(5)#让程序在执行到这位置停留5秒 print('hhh') print(time.time())
1.1、装饰器的作用 —— 不想修改函数的调用方式 但是还想在原来的函数前后添加功能
import time def func():#被装饰函数 time.sleep(0.2) print('hhhh') def timmer(f):#装饰的函数 def inner(): start=time.time() f() end=time.time() print(end-start) return inner func=timmer(func) func()
1.2、语言糖,@装饰函数名
import time def timmer(f): #f就是func() def inner(): start=time.time() f() #相当于func() end=time.time() print(end-start) return inner
@timmer #语法糖,(PS:相当于这条命令)func=timmer(func)) def func(): time.sleep(0.2) print('hhhh') # func=timmer(func) func() #实际执行的是这个函数inner()
1.3、带参数和返回值的函数的装饰器
impor time def timmer(f): def inner(*args,**kwargs): start=time.time() ret=f(*args,**kwargs) end=time.time() print(end-start) return ret return inner
@timmer #语法糖 def func(s): time.sleep(0.2) print('hhhh',s) return 'kkkk' # func=timmer(func) ret=func('xxx') #inner() print(ret)
1.4、装饰器固定模式
def timmer(f): def inner(*args,**kwargs): '''在被装饰函数之前要做的事''' ret=f(*args,**kwargs) '''在被装饰函数之后要做的事''' return ret return inner @timmer #语法糖 def func(s): time.sleep(0.2) print('hhhh',s) return 'kkkk' # func=timmer(func) ret=func('xxx') #inner() print(ret)