Sobes.tech
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.