Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Generadores Infinitos | Especificación del Valor de Retorno de la Función
Tutorial de Funciones en Python
Sección 4. Capítulo 5
single

single

Generadores Infinitos

Desliza para mostrar el menú

Recuerda que yield pausa un generador y lo reanuda en la siguiente llamada a next(). Hasta ahora, los generadores que has visto tenían un punto de finalización claro. Pero los generadores se vuelven especialmente potentes cuando se combinan con un bucle infinito, produciendo valores indefinidamente sin almacenarlos nunca en memoria.

Generadores infinitos con while True

Usar un bucle while True dentro de un generador crea una secuencia infinita, algo que sería imposible de almacenar como una lista. El generador solo produce el siguiente valor cuando se llama a next():

1234567891011
def counter(): count = 1 while True: # Runs forever yield count # Return current value and pause count += 1 # Resume from here on the next call gen = counter() print(next(gen)) # 1 print(next(gen)) # 2 print(next(gen)) # 3

No importa cuántas veces llames a next(), el generador siempre tendrá un nuevo valor listo: nunca se adelanta ni almacena valores en memoria.

Control de un generador infinito

Dado que el generador se ejecuta indefinidamente, es necesario controlar cuántos valores se obtienen. La forma más común es utilizando un bucle for con range():

12345678910
def counter(): count = 1 while True: yield count count += 1 gen = counter() for _ in range(5): print(next(gen)) # 1, 2, 3, 4, 5
Note
Nota

Nunca iterar sobre un generador infinito con un bucle for simple sin una condición de parada; se ejecutará indefinidamente y puede bloquear el programa.

Tarea

Desliza para comenzar a programar

Generación de IDs de usuario únicos utilizando una función generadora infinita. La función id_generator() debe producir continuamente identificadores como "ID_1", "ID_2", etc.

  1. Inicializar la variable count con el valor 1, ya que los identificadores comienzan desde 1.
  2. Utilizar un bucle while infinito para generar identificadores de forma continua.
  3. Utilizar yield para devolver el identificador actual en el formato f"ID_{count}".
  4. Incrementar count en 1 después de cada iteración.
  5. Inicializar el objeto generador id_gen llamando a id_generator().

Solución

Switch to desktopCambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 5
single

single

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

some-alt