Junior — Middle
Wat is de rol van de functie functools.wraps bij het maken van decorators in Python?
sobes.tech AI
Antwoord van AI
De functie functools.wraps wordt gebruikt bij het maken van decorators in Python om de metadata van de oorspronkelijke functie die door de decorator wordt omhuld, te behouden. Zonder het gebruik van wraps worden de naam van de functie, de documentatie (doc) en andere attributen vervangen door die van de interne functie van de decorator, wat het debuggen en documenteren bemoeilijkt.
Voorbeeld van gebruik:
import functools
def my_decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
print("Voor het aanroepen van de functie")
result = func(*args, **kwargs)
print("Na het aanroepen van de functie")
return result
return wrapper
@my_decorator
def greet(name):
"Groetfunctie"
print(f"Hallo, {name}!")
print(greet.__name__) # Zal 'greet' tonen, niet 'wrapper'
print(greet.__doc__) # Zal 'Groetfunctie' tonen
Op deze manier helpt functools.wraps om de informatie over de gedecoreerde functie te behouden, wat de leesbaarheid en het onderhoud van de code verbetert.