Python裝飾器如何提升代碼復(fù)用性

小樊
81
2024-11-09 12:40:41
欄目: 編程語言

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ù)用性方面具有很大的靈活性。

0