裝飾器
裝飾器的原理
- 實現原理:基於@語法和函式閉包,將原函式封裝在閉包中,然後將函式賦值一個新的函式(內層函式),執行函式時再在內層函式中執行的閉包中的原函式。
- 實現效果:可以在不改變原函式內部程式碼和除錯方式的前提下,實現在函式執行和執行擴充套件功能。
使用場景:多個函式系統統一在執行前後自定義一些功能。
- 裝飾器示例
def outer(origin):
def inner(*args,**kwargs):
#執行前
ret = origin(*args,**kwargs) #呼叫原來的func函式
#執行後
return ret
return inner
@outer #這裡表示 func = outer(func)
def func():
pass
func()
案例
def outer(origin):
def inner():
print("berfore)
res = origin() # 呼叫原來的func函式
print("after")
return res
return inner
@outer #func = outer(func)
def func():
print("我是func函式")
value = (11,22,33,44)
rerurn value
result = func()
print(result)
本作品採用《CC 協議》,轉載必須註明作者和本文連結