viernes, 10 de abril de 2026

¡Domina la eficiencia con Funciones Generadoras y yield! 🧠💾

Seguimos optimizando cómo manejas grandes volúmenes de datos. Ya vimos las List Comprehensions (creación rápida) y las Generator Expressions (ahorro de memoria). Es el momento de llevar ese ahorro a tus propias funciones.

¿Sabías que una función estándar calcula todos los resultados, los guarda en una lista en la RAM y luego te los devuelve? Si la lista es enorme, tu programa puede colapsar por falta de memoria. Mira este contraste visual: import sys # ❌ FUNCIÓN ESTÁNDAR (Guarda todo en RAM) def cuadrado_lista(n): resultado = [] for i in range(n): resultado.append(i * i) return resultado # Devuelve la lista completa n = 10_000_000 # 10 millones p1_lista = cuadrado_lista(n) #print(p1_lista) # ¡Cuidado si lo imprimes! print(f"RAM Lista (estándar): {sys.getsizeof(p1_lista) / 1024 / 1024:.2f} MB") # Salida: ~80-90 MB (dependiendo de tu arquitectura) La alternativa Pythonic es usar una Función Generadora. En lugar de un return final, usas la palabra clave yield dentro de un bucle. yield pausa la ejecución, devuelve el valor actual y "recuerda" el estado para continuar justo donde se quedó la próxima vez que se lo pidas con next(). # ✅ FUNCIÓN GENERADORA (Calcula bajo demanda ✨) def cuadrado_generador(n): for i in range(n): yield i * i # Devuelve el valor, pausa y recuerda estado p2_gen = cuadrado_generador(n) # No calcula nada aún #print(p2_gen) # Salida: <generator object...> print(f"RAM Objeto Generador: {sys.getsizeof(p2_gen)} bytes") # Salida: ~100-200 bytes (¡Prácticamente nada!) ¿Por qué usar yield y Funciones Generadoras? Consumo de RAM ínfimo: Procesas flujos de datos gigabytes o infinitos sin saturar la memoria, ya que solo guardas el estado actual de la función. Cálculo perezoso (Lazy Evaluation): Ideal para procesar archivos línea por línea, data streams, o cuando solo necesitas los primeros resultados de una búsqueda compleja. Encadenamiento elegante: Puedes crear pipelines de datos encadenando generadores para transformaciones eficientes. ¡Deja de acumular datos y empieza a fluir con ellos usando yield! 🚀💾 Más trucos de rendimiento y buenas prácticas aquí 👇 🎥 https://www.youtube.com/@josecodetech/




martes, 7 de abril de 2026

Programacion orientada a objetos con Python

 Hasta ahora le decíamos a Python: "haz esto, imprime aquello". Hoy vamos a cambiar las reglas del juego. 🚀


Acabo de publicar una de las clases más importantes del curso de Python: Programación Orientada a Objetos (POO). Si quieres crear aplicaciones robustas o videojuegos, necesitas dominar este concepto.

En este vídeo te explico de forma súper visual:
🏭 Qué es una Clase (El molde o plano de la fábrica).
🤖 Qué es un Objeto (El robot que nace de ese molde).
🧠 Cómo funciona el método __init__ y la palabra self.

Pasa de escribir simples instrucciones a crear entidades con vida propia y características únicas.

🎥 Tienes la clase completa y paso a paso aquí:

¿Te animas a crear tu primera clase "Mascota" o "Coche" después de ver el vídeo? ¡Te leo en los comentarios! 👇



sábado, 4 de abril de 2026

¡De programador a Científico de Datos! 🚀 Mi nuevo libro de Scikit-Learn ya está disponible.

¿Sientes que el Machine Learning es un mundo de matemáticas imposibles? He publicado "SCIKIT LEARN: Machine Learning Práctico con Python" para demostrarte que no es así. Este libro es el compañero definitivo para mi curso gratuito.

Mientras en los vídeos vemos la implementación en vivo, en el libro tienes la estructura teórica, las fórmulas explicadas y los flujos profesionales (como los Pipelines) para consultar a tu propio ritmo.

¿Cómo aprenderás?

Consigue tu copia  digital en Amazon: 👉 https://www.amazon.es/dp/B0CW17NBGM

¡Gracias por el apoyo de siempre! @josecodetech 👨‍💻