Heim > Backend-Entwicklung > Python-Tutorial > Können Python-Dekoratoren Parameter akzeptieren?

Können Python-Dekoratoren Parameter akzeptieren?

Mary-Kate Olsen
Freigeben: 2024-12-20 18:13:18
Original
974 Leute haben es durchsucht

Can Python Decorators Accept Parameters?

Können Dekoratoren Parameter annehmen?

Der Code versucht, einen Dekorator (@execute_complete_reservation) mit einem Argument (insurance_mode) zu verwenden, aber es schlägt fehl . Dies liegt daran, dass Dekoratoren mit Parametern eine andere Syntax haben.

Überarbeitete Dekorator-Syntax:

Dekoratoren mit Parametern geben Funktionen zurück, die eine Funktion als Argument verwenden und dann eine andere zurückgeben Funktion. Es gibt im Wesentlichen einen normalen Dekorator zurück.

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

Anwenden des Dekorators:

Mit dieser Syntax kann der Originalcode wie folgt überarbeitet werden:

@execute_complete_reservation_factory(True)
def test_booking_gta_object(self):
    self.test_select_gta_object()
Nach dem Login kopieren

In diesem überarbeiteten Code ist @execute_complete_reservation_factory eine Factory-Funktion, die einen Dekorator zurückgibt, der die eigentliche Testfunktion annimmt ein Argument.

Das obige ist der detaillierte Inhalt vonKönnen Python-Dekoratoren Parameter akzeptieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage