Python Dekoratoren mit Beispielen erklärt

Erweitern Sie Ihre Funktionen mit Dekoratoren

Lernen Sie, wie Sie das Verhalten Ihrer Funktionen mit Python-Dekoratoren erweitern und verändern können. Dieses Tutorial erklärt das Konzept, bietet praktische Beispiele und zeigt Ihnen, wie Sie Ihre eigenen Dekoratoren schreiben können.

Programmierung
Autor:in
Zugehörigkeit
Veröffentlichungsdatum

5. Februar 2024

Geändert

29. April 2025

Schlüsselwörter

Python-Dekoratoren, Dekoratoren in Python

Einführung

Python-Dekoratoren sind ein mächtiges Werkzeug, das es erlaubt, das Verhalten von Funktionen zu erweitern und zu verändern, ohne ihren Code permanent zu verändern. Sie bieten eine saubere und ausdrucksstarke Möglichkeit, Funktionalität zu Ihren Funktionen hinzuzufügen, was Ihren Code modularer und einfacher zu pflegen macht.

In diesem Tutorial werden wir das Konzept der Dekoratoren erklären, Ihnen zeigen wie sie funktionieren, und praktische Beispiele liefern, die Ihnen helfen, Dekoratoren in Ihre eigenen Projekte einzubauen.



Was sind Dekoratoren?

Ein Dekorator in Python ist eine Funktion, die eine andere Funktion als Argument annimmt, sie um einige Funktionen erweitert und eine neue Funktion zurückgibt. Dekoratoren werden oft verwendet für:
- Protokollierung: Aufzeichnen, wenn Funktionen aufgerufen werden.
- Zugriffskontrolle: Überprüfen von Berechtigungen vor der Ausführung einer Funktion.
- Caching: Speichern von Ergebnissen teurer Funktionsaufrufe.
- Timing: Messung der Ausführungszeit von Funktionen.

Wie Dekoratoren funktionieren

Wenn Sie einen Dekorator auf eine Funktion mit der @decorator_name Syntax anwenden, übergibt Python die dekorierte Funktion an den Dekorator. Der Dekorator gibt dann eine neue Funktion zurück, die das Verhalten der ursprünglichen Funktion verbessert oder modifiziert.

Grundlegendes Decorator-Beispiel

Unten ist ein einfaches Beispiel, das zeigt, wie man einen Dekorator erstellt und verwendet, um Verhalten vor und nach einem Funktionsaufruf hinzuzufügen.

def my_decorator(func):
    def wrapper(*args, **kwargs):
        print("Vor dem Funktionsaufruf")
        result = func(*args, **kwargs)
        print("Nach dem Funktionsaufruf")
        return result
    return wrapper

@my_decorator
def say_hello(name):
    print(f"Hello, {name}!")

say_hello("Alice")

Ergebnisse:

Vor dem Funktionsaufruf
Hallo, Alice!
Nach dem Funktionsaufruf

Fortgeschrittenes Beispiel: Decorator mit Argumenten

Dekoratoren können auch so gestaltet werden, dass sie Argumente akzeptieren, was noch flexiblere Verhaltensänderungen ermöglicht.

def repeat(n):
    def decorator(func):
        def wrapper(*args, **kwargs):
            for i in range(n):
                print(f"Wiederholen Sie die Grüße {i+1}/{n}:")
                result = func(*args, **kwargs)
            return result
        return wrapper
    return decorator

@repeat(3)
def greet(name):
    print(f"Hello, {name}!")

greet("Bob")

Ergebnisse:

Wiederholen Sie die Grüße 1/3:
Hallo, Bob!
Wiederholen Sie die Grüße 2/3:
Hallo, Bob!
Wiederholen Sie die Grüße 3/3:
Hallo, Bob!

Beste Praktiken für die Verwendung von Dekoratoren

  • Einfach halten:
    Schreiben Sie kleine, fokussierte Dekoratoren, die eine Sache gut machen.

  • functools.wraps verwenden:
    Wenn Sie Dekoratoren schreiben, verwenden Sie functools.wraps, um die Metadaten der ursprünglichen Funktion zu erhalten.

    import functools
    
    def my_decorator(func):
        @functools.wraps(func)
        def wrapper(*args, **kwargs):
            print("Vor dem Funktionsaufruf")
            result = func(*args, **kwargs)
            print("Nach dem Funktionsaufruf")
            return result
        return wrapper
  • Dokumentieren Sie Ihre Dekoratoren:
    Klarer Kommentar und Dokumentation des Zwecks und der Verwendung jedes Dekorators.

Schlussfolgerung

Dekoratoren in Python bieten eine flexible und elegante Möglichkeit, das Verhalten von Funktionen zu verändern. Wenn man Dekoratoren beherrscht, kann man mehr modularen und wiederverwendbaren Code schreiben, die Funktionalität ohne Code-Duplizierung verbessern und übergreifende Belange wie Logging und Fehlerbehandlung sauberer implementieren. Experimentieren Sie mit den hier aufgeführten Beispielen und versuchen Sie, Ihre eigenen Dekoratoren zu erstellen, um zu sehen, wie sie Ihre Codierungsaufgaben vereinfachen können.

Weiterführende Literatur

Viel Spaß beim Programmieren, und viel Spaß beim Erweitern Ihrer Funktionen mit Dekoratoren!

Weitere Artikel erkunden

Hinweis

Hier finden Sie weitere Artikel aus derselben Kategorie, die Ihnen helfen, tiefer in das Thema einzutauchen.

placeholder

placeholder
Keine Treffer
Zurück nach oben

Wiederverwendung

Zitat

Mit BibTeX zitieren:
@online{kassambara2024,
  author = {Kassambara, Alboukadel},
  title = {Python Dekoratoren mit Beispielen erklärt},
  date = {2024-02-05},
  url = {https://www.datanovia.com/de/learn/programming/python/advanced/decorators-explained.html},
  langid = {de}
}
Bitte zitieren Sie diese Arbeit als:
Kassambara, Alboukadel. 2024. “Python Dekoratoren mit Beispielen erklärt.” February 5, 2024. https://www.datanovia.com/de/learn/programming/python/advanced/decorators-explained.html.