Python中的裝飾器是一種非常特殊的函數,可以在不改變原函數代碼的情況下對其行為進行擴展或修改。裝飾器本質上也是一個函數,只不過它的參數和返回值有一定的限制。
裝飾器的常見用法是在函數定義前面添加@符號,然后跟上裝飾器的名稱。這樣原來的函數就會被裝飾器所代理,裝飾器會在函數執行前后執行一些操作。
def my_decorator(func): def wrapper(): print("開始執行函數") func() print("函數執行完畢") return wrapper @my_decorator def say_hello(): print("Hello Python") say_hello()
在上面的代碼中,我們定義了一個裝飾器函數my_decorator,它接收一個函數作為參數,并返回一個新的函數wrapper。新函數wrapper內部先打印一段提示信息,然后執行原函數,最后再打印一段提示信息。
下面我們調用say_hello函數,由于它被裝飾器代理了,所以實際上執行的是wrapper函數。因此,在函數執行前后都會輸出提示信息。
以上就是python裝飾器的基本用法,它可以幫助我們更加靈活地擴展和修改代碼行為,提高我們的編程效率。