2024-01-04|閱讀時間 ‧ 約 24 分鐘

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

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 裝飾器用於計算函式的執行時間。


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

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

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.