Kursinhalt
Fortgeschrittene Python-Techniken
Fortgeschrittene Python-Techniken
Dekoratoren mit Parametern
Dekoratoren mit Parametern in Python sind eine fortgeschrittene Funktion, die es Ihnen ermöglicht, zusätzliche Argumente an Ihre Dekoratoren zu übergeben, wodurch deren Flexibilität erhöht wird. Hier ist ein praktisches Beispiel, um dieses Konzept zu veranschaulichen:
Grundstruktur eines Dekorators
Zuerst beginnen wir mit einer grundlegenden Dekoratorstruktur:
def simple_decorator(func): def wrapper(): print("Something is happening before the function is called.") func() print("Something is happening after the function is called.") return wrapper @simple_decorator def say_hello(): print("Hello!") say_hello()
In diesem Beispiel ist simple_decorator ein normaler Dekorator, der das Verhalten der Funktion say_hello modifiziert.
Dekorator mit Parametern
Nun erstellen wir einen Dekorator, der Parameter akzeptiert:
def decorator_with_args(arg1, arg2): def decorator(func): def wrapper(*args, **kwargs): print(f"Decorator args: {arg1}, {arg2}") return func(*args, **kwargs) return wrapper return decorator @decorator_with_args("hello", 42) def print_numbers(a, b): print(a + b) print_numbers(10, 5)
In diesem Beispiel ist decorator_with_args
eine Decorator-Fabrik, die Parameter (arg1, arg2) akzeptiert und den eigentlichen Decorator (decorator) zurückgibt. Die wrapper-Funktion ist diejenige, die das Verhalten der dekorierten Funktion (print_numbers) modifiziert.
Erklärung
decorator_with_args
wird mit seinen Argumenten("hello", 42)
aufgerufen;- Es gibt die
decorator
-Funktion zurück; decorator
nimmt eine Funktionprint_numbers
und gibt diewrapper
-Funktion zurück;wrapper
hat Zugriff sowohl auf die Argumente vondecorator_with_args
als auch auf die Argumente vonprint_numbers
.
Diese Struktur ermöglicht eine größere Flexibilität und Wiederverwendbarkeit von Decorators, da Sie benutzerdefinierte Argumente übergeben können, um ihr Verhalten zu ändern.
Danke für Ihr Feedback!