Python裝飾器(Decorator)是啥?

裝飾器是常見的Python程式技巧,它是一個程式的語法糖,能夠讓程式變得更加簡潔漂亮。

裝飾器本身是一個函式,同時它可以用來”裝飾”另外一個函式,所以裝飾器本身是一個高階函式,也就是接受另外一個函式作為輸入的一個函式。

舉例來說,如果我們現在有一個原本的函式

def original_function():
    print('原本的函式')
    return 1

現在,我們想要修飾原本的函式,使得回傳值1可以加2,我們定義我們的裝飾器函式

def decorate(func):
    def plus_2():
        print("此函式經過修飾")
        return func() + 2
    return plus_2

仔細看一下這個裝飾器的程式碼,可以看到,我們先定義一個新的函式plus_2(準備用來取代原本的func),這個plus_2會先顯示此函式經過修飾,然後回傳原本函式的值加2,然後接受func作為input的decorate最後會回傳一個新的函式叫做plus_2

在python裡面,提供了一個方便的語法糖來使用裝飾器,以下兩個寫法是等價的。

#寫法一
decorate(originial_function)()

#寫法二 - 在原本的originial_function前面加@decorate
@decorate
def original_function():
    print('原本的函式')
    return 1

originial_function()

詳情可以觀看影片

Share

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *