Junior — Middle
¿Cuál es el papel de la función functools.wraps al crear decoradores en Python?
sobes.tech AI
Respuesta de la IA
La función functools.wraps se utiliza al crear decoradores en Python para preservar los metadatos de la función original que el decorador envuelve. Sin usar wraps, el nombre de la función, su documentación (doc) y otros atributos se reemplazan por los atributos de la función interna del decorador, lo que dificulta la depuración y la documentación.
Ejemplo de uso:
import functools
def my_decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
print("Antes de llamar a la función")
result = func(*args, **kwargs)
print("Después de llamar a la función")
return result
return wrapper
@my_decorator
def greet(name):
"Función de saludo"
print(f"¡Hola, {name}!")
print(greet.__name__) # Mostrará 'greet', no 'wrapper'
print(greet.__doc__) # Mostrará 'Función de saludo'
De esta manera, functools.wraps ayuda a mantener la información de la función decorada, mejorando la legibilidad y el mantenimiento del código.