Veamos un ejemplo con yield que podría generar confusión si no estamos acostumbrados a trabajar con generadores.
Click aquí para una versión accesible de la infografía (apta para lectores electrónicos)
Un caso con generadores en Python
Llamando a esta función obtendremos un generador de números pares, desde el 0:
def pares():
i = 0
while True:
yield i
i += 2
Mediante next(), el generador nos da el siguiente número:
generador = pares()
for _ in range(10):
print(next(generador))
¿Tal vez podríamos ahorrarnos una variable e invocar a la función directamente como argumento de next()?
for _ in range(10):
print(next(pares()))
Pero, si hacemos esto, veremos que siempre obtenemos 0…
Cada vez que se llama a pares() se obtiene un nuevo generador, que comenzará por el número 0. Eso es lo que sucede si llamamos a pares() en cada iteración. Es por esto que debemos obtener el generador una única vez y luego usarlo.