Python中裝飾器函數是一個非常強大的編程工具,可以大大提高代碼的復用性和靈活性。裝飾器函數就是用來修飾其他函數的函數。通過在被修飾函數前增加裝飾器函數,可以實現各種不同的功能,比如:日志打印、性能測試、權限驗證、代碼注入等。
# 裝飾器函數的實現 def decorator(func): def wrapper(*args, **kwargs): print("wrapper開始執行") result = func(*args, **kwargs) print("wrapper執行完畢") return result return wrapper # 被裝飾函數 @decorator def test(a, b): print("被裝飾函數test開始執行") return a + b # 使用 test(1, 2)
上面的代碼中,我們先定義了一個裝飾器函數decorator,它接受一個函數參數func,并返回一個新的函數wrapper。wrapper函數是一個閉包函數,它可以調用外部函數decorator的變量和參數。在wrapper函數內部,我們先打印一句話表示wrapper函數開始執行,然后再執行被裝飾函數,最后再打印一句話表示wrapper函數執行完畢,并返回被裝飾函數的結果。
接著我們定義了一個被裝飾函數test,并在它上面使用了decorator裝飾器(@decorator)。這樣在test函數被調用時,會先執行decorator函數,并將test函數作為參數傳入。decorator函數返回的wrapper函數,實際上就是一個新的函數,它會接收test函數的參數,并執行decorator函數里定義的一些操作。最后,wrapper函數返回test函數的結果。
最后我們調用test函數,傳入兩個參數1和2。這時,程序會先執行decorator函數中的wrapper函數,再執行test函數,最后再返回結果。在這個過程中,我們可以在decorator函數中做一些額外的操作,比如:打印日志、計算執行時間、驗證權限等等。這樣就大大提高了程序的靈活性和可復用性。