1. 程式人生 > >python 裝飾器 生成及原裡

python 裝飾器 生成及原裡

# 裝飾器形成的過程 : 最簡單的裝飾器 有返回值的 有一個引數 萬能引數
# 裝飾器的作用
# 原則 :開放封閉原則
# 語法糖 :@
# 裝飾器的固定模式

#不懂技術


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 # # 講解元旦作業 擴充套件裝飾器