Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Dekoratoren mit Parametern | Decorators
Fortgeschrittene Python-Techniken
course content

Kursinhalt

Fortgeschrittene Python-Techniken

Fortgeschrittene Python-Techniken

1. Packen und Entpacken
2. Argumente in Funktionen
3. Funktion als Argument
4. Variablenbereich
5. Decorators

book
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:

123456789101112
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()
copy

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:

12345678910111213
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)
copy

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 Funktion print_numbers und gibt die wrapper-Funktion zurück;
  • wrapper hat Zugriff sowohl auf die Argumente von decorator_with_args als auch auf die Argumente von print_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.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 4
We're sorry to hear that something went wrong. What happened?
some-alt