Kursinhalt
Fortgeschrittene Python-Techniken
Fortgeschrittene Python-Techniken
Syntax
Decorator funktioniert, indem er eine Funktion als Argument nimmt und sie dann innerhalb einer Wrapper-Funktion ausführt.
Um einen Decorator anzuwenden, kann man das @-Symbol gefolgt vom Namen der Decorator-Funktion verwenden, direkt über der Funktion, die modifiziert werden soll. Hier ist ein Beispiel:
In diesem Beispiel erzielen beide Methoden dasselbe Ergebnis. Die erste Methode, die das @
-Symbol verwendet, ist eine lesbarere und prägnantere Art, decorators
anzuwenden, oft als "syntactic sugar" bezeichnet.
Es ist typisch, innerhalb von Decorators eine verschachtelte Funktion namens wrapper
zu verwenden.
Flexible Dekoratoren: Anpassung an unterschiedliche Funktionsargumente
Funktionen erfordern oft eine unterschiedliche Anzahl von Argumenten.
Um einen Dekorator zu entwickeln, der auf Funktionen mit unterschiedlichen Argumentanzahlen angewendet werden kann, ist es effektiv, *args
und **kwargs
in der wrapper()
-Funktion zu verwenden.
def indicate(func): def wrapper(*args, **kwargs): print("=" * 15) print("Taken arguments:", *args, kwargs) result = func(*args, **kwargs) print("=" * 15) return result return wrapper @indicate def avg_two(a, b): """Calculate the average of two numbers""" return round((a + b) / 2, 1) @indicate def avg_three(a, b, c): """Calculate the average of three numbers""" return round((a + b + c) / 3, 1) @indicate def avg_many_kwargs(**kwargs): """Calculate the average of multiple numbers in a dictionary""" keys = 0 total = 0 for value in kwargs.values(): keys += 1 total += value return round(total / keys, 1) print("Returned:", avg_two(14, 21), "\n") print("Returned:", avg_three(225, 12, 11), "\n") print("Returned:", avg_many_kwargs(first=51, second=11, third=47, fourth=93))
Danke für Ihr Feedback!