在Python中,裝飾器是一種特殊類型的函數,它可以用來修改其他函數的行為。裝飾器在函數定義之前使用@
符號聲明,并緊跟在函數名之前。裝飾器本身是一個接受函數作為參數的可調用對象(通常是一個函數或類),并返回一個新的函數。
要使用裝飾器修改函數,請按照以下步驟操作:
@
符號和裝飾器函數名聲明裝飾器。下面是一個簡單的示例,展示了如何使用裝飾器來計算函數的運行時間:
import time
def timer_decorator(func):
def wrapper():
start_time = time.time()
result = func()
end_time = time.time()
print(f"{func.__name__} took {end_time - start_time:.2f} seconds to run.")
return result
return wrapper
@timer_decorator
def my_function():
time.sleep(2)
print("My function has finished running.")
my_function()
在這個示例中,我們定義了一個名為timer_decorator
的裝飾器函數,它接受一個函數func
作為參數。在裝飾器內部,我們定義了一個名為wrapper
的內部函數,該函數計算原始函數的運行時間并打印結果。最后,我們返回wrapper
函數。
要使用裝飾器,我們在my_function
函數定義之前使用@timer_decorator
聲明裝飾器。這樣,當我們調用my_function
時,實際上是在調用wrapper
函數,從而計算并打印函數的運行時間。