[Python]裝飾器 (Decorator) 函數

文、意如

裝飾器是一種「外掛」模式,能在不修改原始函數碼的前提下,為其增加功能(如日誌記錄、時間監控、請求限流)。
可以在執行任何核心業務邏輯(如訂單處理、數據計算)前後,自動加上性能監控或訪問控制。
裝飾器是一個接受函數為參數,並回傳一個新函數的函數。這個新函數(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 - 關於我 - 意如