在Python中,裝飾器是一種特殊類型的函數(shù),它可以用來修改其他函數(shù)的行為。裝飾器在函數(shù)定義之前使用@
符號聲明,并緊跟在函數(shù)名之前。裝飾器本身是一個接受函數(shù)作為參數(shù)的可調(diào)用對象(通常是一個函數(shù)或類),并返回一個新的函數(shù)。
要使用裝飾器修改函數(shù),請按照以下步驟操作:
@
符號和裝飾器函數(shù)名聲明裝飾器。下面是一個簡單的示例,展示了如何使用裝飾器來計算函數(shù)的運行時間:
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
的裝飾器函數(shù),它接受一個函數(shù)func
作為參數(shù)。在裝飾器內(nèi)部,我們定義了一個名為wrapper
的內(nèi)部函數(shù),該函數(shù)計算原始函數(shù)的運行時間并打印結(jié)果。最后,我們返回wrapper
函數(shù)。
要使用裝飾器,我們在my_function
函數(shù)定義之前使用@timer_decorator
聲明裝飾器。這樣,當(dāng)我們調(diào)用my_function
時,實際上是在調(diào)用wrapper
函數(shù),從而計算并打印函數(shù)的運行時間。