Python裝飾器是一種在不修改原始函數(shù)代碼的情況下,為函數(shù)增加新功能的方法。裝飾器通過接收一個(gè)函數(shù)作為參數(shù),然后返回一個(gè)新的函數(shù),這個(gè)新函數(shù)通常會(huì)包含原始函數(shù)的功能以及額外的操作。這樣可以在不改變?cè)即a的基礎(chǔ)上,為多個(gè)函數(shù)添加相同的功能,從而提高代碼的復(fù)用性。
以下是一個(gè)簡(jiǎn)單的裝飾器示例:
def my_decorator(func):
def wrapper():
print("Before the function is called.")
func()
print("After the function is called.")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
在這個(gè)例子中,my_decorator
是一個(gè)裝飾器,它接收一個(gè)函數(shù) func
作為參數(shù)。wrapper
函數(shù)是在原始函數(shù)之前和之后添加額外操作的包裝函數(shù)。通過 @my_decorator
語法,我們將 say_hello
函數(shù)與 my_decorator
裝飾器關(guān)聯(lián)起來。當(dāng)我們調(diào)用 say_hello()
時(shí),實(shí)際上是在調(diào)用 wrapper
函數(shù),從而實(shí)現(xiàn)了在不修改原始代碼的情況下為函數(shù)增加新功能的目的。
裝飾器可以應(yīng)用于任何可調(diào)用對(duì)象,如函數(shù)、類方法或靜態(tài)方法等。這使得裝飾器在提高代碼復(fù)用性方面具有很大的靈活性。