Dekoratoren in Python sind im Wesentlichen Funktionen, die es erlauben, andere Funktionen oder Methoden zu modifizieren oder zu verbessern. Sie werden normalerweise mit dem @-Symbol gefolgt vom Dekorator-Namen vor der Funktion, die sie dekorieren, angezeigt.
Schauen Sie sich das folgende einfache Beispiel in Python an:
```python
def mein_dekorator(funk):
def wrapper():
print(“Etwas passiert vor dem Funktionsaufruf.”)
funk()
print(“Etwas passiert nach dem Funktionsaufruf.”)
return wrapper
@mein_dekorator
def sagenHallo():
print(“Hallo!”)
sagenHallo()
```
Wenn Sie diesen Code ausführen, wird Folgendes ausgegeben:
```
Etwas passiert vor dem Funktionsaufruf.
Hallo!
Etwas passiert nach dem Funktionsaufruf.
```
In diesem Beispiel ist ```mein_dekorator``` ein Dekorator, der die Funktion ```sagenHallo``` dekoriert. Die Funktionslogik bleibt unverändert, aber die Dekoratoren ermöglichen es uns, zusätzlichen Code vor und nach der Funktionsausführung einzufügen.
Falls Ihre Funktion Parameter erwartet, kann man die *args und **kwargs in der inneren Wrapper-Funktion verwenden:
```python
def mein_dekorator(funk):
def wrapper(*args, **kwargs):
print(“Etwas passiert vor dem Funktionsaufruf.”)
funk(*args, **kwargs)
print(“Etwas passiert nach dem Funktionsaufruf.”)
return wrapper
@mein_dekorator
def sagenHallo(name):
print(f“Hallo {name}!”)
sagenHallo(“Anna”)
```
Diese werden ausgeführt und geben Folgendes zurück:
```
Etwas passiert vor dem Funktionsaufruf.
Hallo Anna!
Etwas passiert nach dem Funktionsaufruf.
```