0Pricing
Python Academy · Lección

Generadores

Comprenda los generadores y su uso para crear iteradores

Generadores es una lección gratuita de Python Academy en CoddyKit. Esta es la lección 2 de 5. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Python Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Python Academy incluye 5 lecciones en total.

Introducción a los generadores

Introducción a los generadores

Los generadores son un tipo especial de iterador en Python que permite recorrer datos de forma diferida. En lugar de devolver todos los datos a la vez, producen un elemento cada vez, lo que permite ahorrar memoria.

En esta lección, aprenderá a crear y usar generadores en Python.

Generadores — ilustración 1

¿Qué es un generador?

¿Qué es un generador?

Un generador es una función que usa la palabra clave yield para devolver valores uno a uno. Cada llamada al método next() del generador reanuda la ejecución desde el punto en el que se produjo el último valor.

# Basic generator example
def my_generator():
    yield 1
    yield 2
    yield 3

# Using the generator
gen = my_generator()
print(next(gen))  # Outputs: 1
print(next(gen))  # Outputs: 2
print(next(gen))  # Outputs: 3

Cómo funcionan los generadores

Cómo funcionan los generadores

Los generadores conservan el estado de la función, por lo que pueden reanudar la ejecución exactamente donde se detuvieron. Esto permite ahorrar memoria y los hace ideales para conjuntos de datos grandes.

# Example: Generating a range of numbers
def range_generator(start, end):
    while start < end:
        yield start
        start += 1

for number in range_generator(1, 5):
    print(number)  # Outputs: 1, 2, 3, 4

Expresiones generadoras

Expresiones generadoras

Las expresiones generadoras son similares a las comprensiones de listas, pero usan paréntesis en lugar de corchetes. Crean generadores en vez de listas.

# Generator expression
gen_exp = (x * x for x in range(5))

for value in gen_exp:
    print(value)  # Outputs: 0, 1, 4, 9, 16

Generadores frente a listas

Generadores frente a listas

Los generadores usan menos memoria que las listas porque no almacenan todos los datos en memoria. En su lugar, generan los datos sobre la marcha.

# Comparing lists and generators
# List comprehension
list_comp = [x * x for x in range(1000000)]

# Generator expression
gen_exp = (x * x for x in range(1000000))

# List comprehension uses more memory
print(type(list_comp))  # Outputs: <class 'list'>
print(type(gen_exp))    # Outputs: <class 'generator'>

Casos de uso de los generadores

Casos de uso de los generadores

Los generadores son ideales para:

  • Procesar conjuntos de datos grandes que no caben en memoria.
  • Generar secuencias infinitas.
  • Evaluar datos de forma diferida.

Generadores infinitos

Generadores infinitos

Los generadores pueden producir secuencias infinitas, como una secuencia interminable de números. Asegúrese de detener el bucle para evitar una ejecución infinita.

# Infinite generator example
def infinite_sequence():
    num = 0
    while True:
        yield num
        num += 1

# Using the infinite generator
for i in infinite_sequence():
    if i > 5:
        break
    print(i)  # Outputs: 0, 1, 2, 3, 4, 5

Funciones generadoras con varios valores yield

Funciones generadoras con varios valores yield

Las funciones generadoras pueden tener varias instrucciones yield, lo que permite crear secuencias complejas:

# Multiple yields in a generator
def multi_yield():
    yield "First"
    yield "Second"
    yield "Third"

for value in multi_yield():
    print(value)  # Outputs: First, Second, Third

Errores habituales con los generadores

Errores habituales con los generadores

Estos son algunos errores que debe evitar:

  • Usar return en lugar de yield en una función generadora.
  • No consumir el generador con un bucle o con next().
  • Usar generadores para conjuntos de datos pequeños, donde las listas son más adecuadas.

¿Qué hemos aprendido?

¿Qué hemos aprendido?

En esta lección, ha aprendido:

  • Qué son los generadores y cómo funcionan en Python.
  • Cómo usar yield para crear funciones generadoras.
  • Las diferencias entre los generadores y las listas.
  • Casos de uso de los generadores, como las secuencias infinitas y los conjuntos de datos grandes.

¡Buen trabajo! Pasemos al siguiente tema.

Generadores — ilustración 11

Preguntas frecuentes

¿La lección «Generadores» es gratis?

Sí — el texto completo de «Generadores» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Python Academy, actualiza a CoddyKit PRO. El curso de Python Academy incluye 5 lecciones en total.

¿Qué aprenderé en «Generadores»?

Comprenda los generadores y su uso para crear iteradores Practicas Python Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Python Academy?

No se requiere experiencia previa. Python Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 5.

¿Cuánto tiempo toma la lección «Generadores»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Python Academy?

Sí. Cada lección de Python Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Decoradores
  2. Generadores
  3. Gestores de contexto (sentencias with)
  4. Comprensiones (de listas, conjuntos y diccionarios)
  5. Iteradores e iterables
← Volver a Python Academy