Python By Ryan

Python 裝飾器 (Decorator) 實戰:為函數加上計時與重試機制

優雅地擴充函數功能

Decorator 是 Python 的語法糖,允許在不修改原函數代碼的情況下,動態增加功能。這在維運腳本中非常實用。

應用場景 1:執行時間測量
可以用來監控爬蟲或資料處理函數的效能瓶頸。

應用場景 2:自動重試 (Retry)
針對不穩定的網路請求 (如呼叫外部 API),寫一個 @retry(times=3) 裝飾器。

def retry(times):
    def decorator(func):
        def wrapper(*args, **kwargs):
            for _ in range(times):
                try:
                    return func(*args, **kwargs)
                except Exception:
                    continue
            raise Exception("Failed after retries")
        return wrapper
    return decorator

這樣只需在函數上方加上 @retry(3),就能大幅提升腳本的強健性 (Robustness)。