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()