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.