Junior — Middle
Care este rolul funcției functools.wraps în crearea decoratorilor în Python?
sobes.tech AI
Răspuns de la AI
Funcția functools.wraps este utilizată la crearea decoratorilor în Python pentru a păstra metadatele funcției originale pe care o înfășoară decoratorul. Fără utilizarea wraps, numele funcției, documentația (doc) și alte atribute sunt înlocuite cu cele ale funcției interne a decoratorului, ceea ce face mai dificil debugging-ul și documentarea.
Exemplu de utilizare:
import functools
def my_decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
print("Înainte de apelarea funcției")
result = func(*args, **kwargs)
print("După apelarea funcției")
return result
return wrapper
@my_decorator
def greet(name):
"Funcție de salut"
print(f"Salut, {name}!")
print(greet.__name__) # Va afișa 'greet', nu 'wrapper'
print(greet.__doc__) # Va afișa 'Funcție de salut'
Astfel, functools.wraps ajută la păstrarea informațiilor despre funcția decorată, ceea ce îmbunătățește lizibilitatea și întreținerea codului.