python 裝飾器 生成及原裡
阿新 • • 發佈:2018-11-02
# 裝飾器形成的過程 : 最簡單的裝飾器 有返回值的 有一個引數 萬能引數 # 裝飾器的作用 # 原則 :開放封閉原則 # 語法糖 :@ # 裝飾器的固定模式 #不懂技術 import time # print(time.time()) # 獲取當前時間 # time.sleep(10) #讓程式在執行到這個位置的時候停一會兒 # def timmer(f): #裝飾器函式 # def inner(): # start = time.time() # ret = f() #被裝飾的函式 # end = time.time()# print(end - start) # return ret # return inner # # @timmer #語法糖 @裝飾器函式名 # def func(): #被裝飾的函式 # time.sleep(0.01) # print('老闆好同事好大家好') # return '新年好' # # func = timmer(func) # ret = func() #inner() # print(ret) # 裝飾器的作用 —— 不想修改函式的呼叫方式 但是還想在原來的函式前後新增功能 # timmer就是一個裝飾器函式,只是對一個函式 有一些裝飾作用# 原則: 開放封閉原則 # 開放 : 對擴充套件是開放的 # 封閉 : 對修改是封閉的 # 封版 # def outer(): # def inner(): # return 'inner' # inner() # # outer() #裝飾帶引數函式的裝飾器 # def timmer(f): #裝飾器函式 # def inner(*args,**kwargs): # #(1,2) /(1) # start = time.time() # ret = f(*args,**kwargs) #f(1,2) #被裝飾的函式# end = time.time() # print(end - start) # return ret # return inner # # @timmer #語法糖 @裝飾器函式名 # def func(a,b): #被裝飾的函式 # time.sleep(0.01) # print('老闆好同事好大家好',a,b) # return '新年好' # # @timmer #語法糖 @裝飾器函式名 # def func1(a): #被裝飾的函式 # time.sleep(0.01) # print('老闆好同事好大家好',a) # return '新年好' # # func = timmer(func) # ret = func(1,2) #inner() # ret = func(1,b = 2) #inner() # print(ret) # def wrapper(f): #裝飾器函式,f是被裝飾的函式 # def inner(*args,**kwargs): # '''在被裝飾函式之前要做的事''' # ret = f(*args,**kwargs) #被裝飾的函式 # '''在被裝飾函式之後要做的事''' # return ret # return inner # # @wrapper #語法糖 @裝飾器函式名 # def func(a,b): #被裝飾的函式 # time.sleep(0.01) # print('老闆好同事好大家好',a,b) # return '新年好' # def wrapper(): # def inner(): # pass # return inner def wrapper(func): #qqxing def inner(*args,**kwargs): ret = func(*args,**kwargs) #被裝飾的函式 return ret return inner @wrapper #qqxing = wrapper(qqxing) def qqxing(): print(123) ret = qqxing() #inner # # 講解元旦作業 擴充套件裝飾器