import time
deftimer(func):definner(*args,**kwargs):#匿名參數 或 多個參數
start = time.time()
re = func(*args,**kwargs)print(time.time()- start)return re
return inner
@timer #==> func1 = timer(func1)deffunc1(a,b):print('in func1')
@timer #==> func2 = timer(func2)deffunc2(a):print('in func2 and get a:%s'%(a))return'fun2 over'# 這是反回值
func1('aaaaaa','bbbbbb')print(func2('aaaaaa'))
裝飾器的應用 - - 帶返回值的裝飾器
import time
deftimer(func):definner(*args,**kwargs):
start = time.time()
re = func(*args,**kwargs)print(time.time()- start)return re
return inner
@timer #==> func2 = timer(func2)deffunc2(a):print('in func2 and get a:%s'%(a))return'fun2 over'
func2('aaaaaa')print(func2('aaaaaa'))
裝飾器的應用 - - 模型(固定格式)
deftimer(func):definner(*args,**kwargs):'''執行函數之前要做的'''
re = func(*args,**kwargs)'''執行函數之後要做的'''return re
return inner
裝飾器的應用 - - 取消裝飾器(標識位)
defouter(flag):deftimer(func):definner(*args,**kwargs):if flag:print('''執行函數之前要做的''')
re = func(*args,**kwargs)if flag:print('''執行函數之後要做的''')return re
return inner
return timer
@outer(True)#判斷條件是否滿足 條件滿足 進入裝飾器 不滿足不進入deffunc():print(111)
func()