装饰器是给代码升级功能
#最简单的装饰器;有返回值的;有一个参数的;万能参数的 import time def ti(f): def inner(*args,**kwargs): start = time.time() ret = f(*args,**kwargs) end = time.time() print(end - start) return ret return inner @ti #语法糖 def func1(a,b): time.sleep(0.01) print('你好',a,b) return "新年快乐" @ti def func2(a): time.sleep(0.01) print('你好',a) return "新年快乐" #func = ti(func) #加了装饰器后就省略了这一句 ret1 = func1(a=2,b=4) ret2 = func2(a=222) print(ret1,' ',ret2)
装饰器的固定模式
def wrapper(f): #wrapper是装饰器函数名,f是被装饰函数 def inner(*args,**kwargs): ''' 在被装饰的函数之前要做的事 ''' ret = f(*args,**kwargs) ''' 在被装饰的函数之后要做的事 ''' return ret return inner