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

single

Funciones Generadoras

Desliza para mostrar el menú

Note
Definición

Una función generadora es un tipo especial de función que utiliza la palabra clave yield en lugar de return para generar una secuencia de valores. Cuando se llama a una función generadora, devuelve un objeto iterador, que puede ser recorrido para obtener los valores uno a uno.

La principal ventaja de las funciones generadoras es su eficiencia de memoria. En lugar de generar toda la secuencia de antemano y almacenarla en memoria, los generadores producen los valores en el momento en que se necesitan.

Cómo funciona yield

A diferencia de return, que finaliza completamente la función, yield pausa la función y guarda su estado. La próxima vez que se llama a next(), el generador se reanuda exactamente desde donde se detuvo:

12345678910
def count_up(start, stop): while start <= stop: yield start # Pause and return the current value start += 1 # Resume from here on the next call counter = count_up(1, 3) print(next(counter)) # 1 print(next(counter)) # 2 print(next(counter)) # 3

También se puede iterar sobre un generador utilizando un bucle for; este llama automáticamente a next() hasta que el generador se agota:

1234567
def count_up(start, stop): while start <= stop: yield start start += 1 for value in count_up(1, 5): print(value) # 1, 2, 3, 4, 5
Note
Nota

Una vez que un generador se agota (no quedan más valores para producir), llamar a next() sobre él generará un error StopIteration. Un bucle for maneja esto automáticamente.

Tarea

Desliza para comenzar a programar

Implementa una función generadora even_numbers que produzca números pares dentro de un rango dado.

  1. Definir una función generadora even_numbers que reciba dos parámetros: start y stop.
  2. Utilizar un bucle while para iterar mientras start sea menor o igual que stop.
  3. Usar yield para devolver start solo si es par (divisible por 2).
  4. Incrementar start en 1 después de cada iteración.
  5. Utilizar un bucle for para imprimir todos los valores generados.

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 4
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