2018.12.14 今日所學
阿新 • • 發佈:2018-12-15
關於函式的裝飾器
1 .裝飾器,(難點,重點)
開閉原則:
對功能的擴充套件開放
對程式碼的修改是封閉
通用裝飾器語法:
def wrapper(fn):
def inner(*args,**kwargs):
在目標函式之前加功能
ret=fn(*args,**kwargs)
在目標函式之後加功能
return ret
return inner
@wrapper @就表示裝飾器
def func():
pass
func()
2. 同一個函式被多個裝飾器裝飾 (就近原則)
@wrapper1
@wrapper2
@wrapper3
def func:
pass
裝飾效果 : 1 2 3 func 3 2 1
3. 帶引數的裝飾器 ( 略 微 難 受 )
def wrapper_out(引數):
def wrapper(fn):
def inner(*args,**kwargs):
在目標函式之前
net=fn(*args,**kwargs)
在目標函式之後
return net
return inner
return wrapper
@wrapper_out(實參) #執行的時候,先執行函式的呼叫,將返回值和前面的@組合成裝飾器語法糖
def func():
pass
func()