Laboratorio de Python · Observa, prueba, comprende

Decoradores en Python

Mira el código, sigue su recorrido y comprueba lo que has entendido. Cada paso resalta la línea que corre, lo que pasa en memoria y lo que sale por pantalla.

1. Observa la animación · 2. Lee la explicación · 3. Explora los ejemplos de IA

Código
Qué pasa en memoria
Salidastdout
Dos ejemplos para IA

¿Para qué se utilizan los decoradores?

En una aplicación de IA puedes añadir tareas alrededor de una predicción sin repetirlas dentro de cada función.

01 · Medir una predicción

¿Cuánto tarda en responder?

Situación: tu aplicación clasifica comentarios y quieres medir el tiempo que tarda cada predicción.

El decorador pone en marcha un cronómetro, llama a la función y muestra el tiempo sin cambiar su respuesta.

Ver el ejemplo en Python
from functools import wraps
from time import perf_counter

def medir_tiempo(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        inicio = perf_counter()
        try:
            return func(*args, **kwargs)
        finally:
            print(f"Tiempo: {perf_counter() - inicio:.4f} s")
    return wrapper

@medir_tiempo
def predecir(texto):
    # Regla de juguete: simula la respuesta de un modelo.
    return "positivo" if "excelente" in texto.lower() else "neutro"

print(predecir("Servicio excelente"))
# Tiempo: ... s (varía en cada ejecución)
# positivo

En una aplicación real, el cuerpo de predecir llamaría al modelo; aquí usamos una regla sencilla para que puedas ejecutar el ejemplo sin instalar nada.

02 · Reutilizar una predicción

¿Ya he procesado este texto?

Situación: recibes el mismo comentario varias veces y quieres evitar repetir una predicción que dará el mismo resultado.

El decorador guarda el resultado y lo devuelve directamente cuando se repiten el texto y la versión del modelo.

Ver el ejemplo en Python
from functools import lru_cache

@lru_cache(maxsize=128)
def predecir(texto, version_modelo):
    print("Calculando predicción…")
    # Regla de juguete: simula la respuesta de un modelo.
    return "positivo" if "excelente" in texto.lower() else "neutro"

print(predecir("Servicio excelente", "v1"))
# Calculando predicción…
# positivo
print(predecir("Servicio excelente", "v1"))
# positivo (reutiliza el resultado guardado)

Úsalo si la respuesta es reutilizable: cuando cambien el modelo o su configuración, cambia la clave de caché o vacíala con predecir.cache_clear(); si la salida debe variar en cada llamada, no reutilices esa predicción.

Ambos ejemplos simulan una clasificación con una regla; no entrenan ni ejecutan un modelo de IA.

Amplía con Python: caché y wraps.

Comprueba tu intuición

Antes de seguir…

Elige una respuesta para ver la explicación.

¿Cómo funcionan los decoradores en Python?

Un decorador transforma una función y puede devolver un envoltorio que añade comportamiento antes o después de llamarla.

Cómo se utiliza en este recurso

Diez pasos muestran funciones como objetos, referencias, envoltorios, condiciones, la sintaxis @ y property. Dos ejemplos para aplicaciones de IA explican cómo medir una predicción y reutilizarla con caché; incluye un reto con explicación.

Alcance y límites

Las animaciones simulan casos concretos en JavaScript; no ejecutan Python. Los fragmentos de los pasos son parciales y comparten definiciones anteriores. Los dos ejemplos de uso son ejecutables en Python, pero simulan una clasificación mediante una regla: no entrenan ni ejecutan un modelo de IA. La caché solo es adecuada cuando se puede reutilizar el resultado para las mismas entradas y versión del modelo.

Preguntas frecuentes

¿Qué diferencia hay entre func y func()?

func referencia el objeto función; func() llama a la función y produce su valor de retorno.

¿Para qué sirve property?

Permite controlar la lectura y la asignación de un atributo mediante métodos.

Fuentes para contrastar y ampliar

Recursos relacionados