Python全棧學習筆記day 11:裝飾器
阿新 • • 發佈:2018-11-02
原則 :開放封閉原則
開放 : 對擴充套件是開放的
封閉 : 對修改是封閉的
裝飾器的作用 :在不改變原函式的呼叫方式的情況下,在函式的前後新增功能
裝飾器的本質 : 閉包函式
裝飾器的作用 : 不想修改函式的呼叫方式 但是還想在原來的函式前後新增功能
裝飾器形成的過程 : 1、最簡單的裝飾器
2、有返回值的
3、有一個引數
4、萬能引數
不帶引數的裝飾器:
import time def timer(func): def inner(): start = time.time() #被裝飾函式之前做的事情 func() print(time.time() - start) #被裝飾函式之後做的事情 return inner @timer #==> func1 = timer(func1) 語法糖 def func1(): print('in func1') func1()
萬能裝飾器:
def wrapper(func):
def inner(*args,**kwargs):
#在被裝飾函式前做的事
ret = func(*args,**kwargs)
#在被裝飾函式後做的事
return ret
return inner
@wrapper #holiday = wrapper(holiday)
def holiday(day):
return day #被裝飾函式裡的內容
ret = holiday(1)
print(ret)