首頁 >後端開發 >Python教學 >Python 裝飾器可以接受參數嗎?

Python 裝飾器可以接受參數嗎?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-20 18:13:18978瀏覽

Can Python Decorators Accept Parameters?

裝飾器可以接受參數嗎?

程式碼嘗試使用帶有參數(insurance_mode)的裝飾器(@execute_complete_reservation),但失敗。發生這種情況是因為帶有參數的裝飾器具有不同的語法。

已修訂的裝飾器語法:

帶參數的裝飾器傳回將一個函數作為參數的函數,然後傳回另一個函數功能。它本質上傳回一個普通的裝飾器。

def decorator_factory(argument):
    def decorator(function):
        def wrapper(*args, **kwargs):
            # Additional code
            function(*args, **kwargs)
            # More additional code
        return wrapper
    return decorator

應用裝飾器:

使用此語法,原始程式碼可以修改如下:

@execute_complete_reservation_factory(True)
def test_booking_gta_object(self):
    self.test_select_gta_object()

在這個修改後的程式碼中,@execute_complete_reservation_factory 是一個工廠函數,它傳回一個裝飾器,將實際的測試函數作為參數。

以上是Python 裝飾器可以接受參數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn