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

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

Mary-Kate Olsen
發布: 2024-12-20 18:13:18
原創
976 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板