Sobes.tech
Junior — Middle

Welche Rolle spielt die Funktion functools.wraps bei der Erstellung von Decorators in Python?

sobes.tech KI

Antwort von AI

Die Funktion functools.wraps wird beim Erstellen von Decorators in Python verwendet, um die Metadaten der ursprünglichen Funktion zu erhalten, die vom Decorator umschlossen wird. Ohne die Verwendung von wraps werden der Name der Funktion, ihre Dokumentation (doc) und andere Attribute durch die Attribute der internen Funktion des Decorators ersetzt, was die Fehlersuche und Dokumentation erschwert.

Beispiel für die Verwendung:

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

@my_decorator
def greet(name):
    "Begrüßungsfunktion"
    print(f"Hallo, {name}!")

print(greet.__name__)  # Gibt 'greet' aus, nicht 'wrapper'
print(greet.__doc__)   # Gibt 'Begrüßungsfunktion' aus

Auf diese Weise hilft functools.wraps, die Informationen über die dekorierte Funktion zu bewahren, was die Lesbarkeit und Wartbarkeit des Codes verbessert.