Python 程式札記 : 裝飾器(Decorator)

2024/01/04閱讀時間約 3 分鐘

Python 裝飾器(Decorator),它能夠讓你在不改變原始函式的情況下,增加額外的功能。本文將介紹 Python 裝飾器的基本概念、實現方式,並提供實際應用範例讓你更好了解Python 裝飾器。

Python 裝飾器的基本概念

裝飾器(Decorator)是 Python 中一種非常有用的設計模式,它能夠讓我們以一種簡潔的方式擴展函式的行為。簡單來說,裝飾器就是一個函式,它可以接受一個函式作為參數並返回一個新的函式。

裝飾器的基礎使用

以下是一個簡單的裝飾器示例:

def my_decorator(func):
def wrapper():
print("1!!!")
func()
print("2!!!")
return wrapper

@my_decorator
def greet():
print("3插隊!!!")

greet()

在這個例子中,my_decorator 是一個裝飾器,它增加了在原有 greet 函式前後進行的操作。

帶參數的裝飾器

帶參數的裝飾器可以在調用時提供更多靈活性。例如:

def repeat(num_times):
def decorator_repeat(func):
def wrapper(*args, **kwargs):
for _ in range(num_times):
result = func(*args, **kwargs)
return result
return wrapper
return decorator_repeat

@repeat(num_times=3)
def greet(name):
print(f"Hello, {name}")

greet("World")

在這個例子中,repeat 裝飾器接受一個參數 num_times,它控制了 greet 函式的執行次數。

裝飾器的實際應用範例

裝飾器在實際應用中非常有用,例如在 Web 框架中用於路由處理、在日誌記錄中自動記錄信息,或者在性能測試中計算函式的執行時間。

import time

def timer(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"{func.__name__} 執行時間:{end_time - start_time}秒")
return result
return wrapper

@timer
def long_running_function():
print('開始執行......')
time.sleep(2)

long_running_function()

在這個例子中,timer 裝飾器用於計算函式的執行時間。


😊 感謝你的耐心閱讀,若是你喜歡這篇內容,可以透過以下方式表達你的喜歡 😊

❤️按個愛心|💬留言互動|🔗分享此文|📌追蹤阿梧|☕請喝咖啡

51會員
82內容數
「梧笙」即「吾生」,意即我的生命,朋友都叫我「阿梧(Awu)」,高雄人。我喜歡學習新技能,從程式設計到網路工具,再到社群經營和影片剪輯。日常興趣是打遊戲、看動漫、讀小說和聽音樂。我會把這些興趣寫成文章,如果你有任何想法或問題,歡迎來信到我的郵箱 [email protected]
留言0
查看全部
發表第一個留言支持創作者!