文、意如
裝飾器是一種「外掛」模式,能在不修改原始函數碼的前提下,為其增加功能(如日誌記錄、時間監控、請求限流)。
可以在執行任何核心業務邏輯(如訂單處理、數據計算)前後,自動加上性能監控或訪問控制。
裝飾器是一個接受函數為參數,並回傳一個新函數的函數。這個新函數(Wrapper)會包裹原函數的執行,並在前後加入額外的邏輯。範例程式碼:
def special_offer_decorator(func):
"""
外掛:在函數運行完畢後,自動印出特價訊息。
"""
def wrapper(*args, **kwargs):
# 1. 執行原有的「飲品製作」函數
result = func(*args, **kwargs)
# 2. 自動執行額外的「特價宣傳」功能
print("---")
print("** 今日特價優惠中!快來嘗試!")
print("---")
# 3. 回傳結果
return result
return wrapper
# 應用外掛到不同的「飲品製作」函數上
@special_offer_decorator
def make_latte(size):
print(f"正在製作 {size} 的拿鐵...")
return f"{size} 拿鐵"
@special_offer_decorator
def bake_cookie():
print("正在烘烤新鮮的餅乾...")
return "新鮮餅乾"
# 執行結果:無論製作哪種產品,都會自動加上特價訊息
latte = make_latte("大杯")
print(f"拿到產品: {latte}\n")
cookie = bake_cookie()
print(f"拿到產品: {cookie}")

Yiru@Studio - 關於我 - 意如