Was macht das Symbol "at" (@) in Python?

In Python wird das Symbol "@" verwendet, um eine Funktion zu dekorieren. Ein Dekorator ist ein Designmuster in Python, mit dem das Verhalten einer Funktion oder Klasse ohne Änderung ihres Codes modifiziert werden kann. Hier ist ein Beispiel für einen Dekorator in Python:

def my_decorator(func):
    def wrapper():
        print("Etwas passiert, bevor die Funktion aufgerufen wird.")
        func()
        print("Etwas passiert, nachdem die Funktion aufgerufen wurde.")
    return wrapper

@my_decorator
def say_hello():
    print("Hallo!")

say_hello()

In diesem Beispiel ist die Funktion my_decorator ein Dekorator. Es nimmt eine Funktion als Argument, definiert eine neue Funktion wrapper, die etwas vor und nach dem Aufruf der ursprünglichen Funktion tut, und gibt die neue Funktion zurück. Die Zeile @my_decorator über der Funktion say_hello ist die Syntax des Dekorators, die Python sagt, dass die Funktion my_decorator als Dekorator auf die Funktion say_hello angewendet werden soll. Wenn Sie say_hello() aufrufen, wird zunächst der Code in der Funktion wrapper ausgeführt, dann die Funktion say_hello aufgerufen und anschließend der Code in der Funktion wrapper erneut ausgeführt.