logo cosasdedevs

¿Qué es yield en Python?


Yield se utiliza en las funciones generadoras que son funciones iguales a los iteradores (pincha aquí si no tienes muy claro como funcionan los iteradores), es decir, podemos iterar sobre ellas, pero la diferencia con los iteradores es que se pueden crear de forma más sencilla. Estas se valen de la sentencia yield que es muy similar a return, pero con la diferencia de que podemos usarlo varias veces en una misma función.

La primera vez que ejecutemos la función, la procesará hasta que encuentre el primer yield, la segunda vez, la función se ejecutará desde donde se quedó anteriormente, eso quiere decir que se ejecutará el código entre el primer yield y hasta el segundo y así sucesivamente hasta el último yield.

Para ver más claro como funciona la sentencia yield, vamos a verlo con un ejemplo:

def my_first_generator():

    print('Paso 1')

    yield 1

    print('Paso 2')

    yield 2

    print('Paso 3')

    yield 3

gen = my_first_generator()

print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))

En este caso, tenemos una función generadora que guardamos en una variable. La recorremos con next como si fuera un iterador. La primera vez, retornará 1, imprimirá "Paso 1" y guardará el estado. La segunda vez, se ejecutará el código a continuación del primer yield y hasta el segundo que imprimirá el mensaje "Paso 2" y retornará 2. Después hará lo mismo con la tercera parte del código y en la última iteración, lanzará la excepción StopIteration porque ya no hay más datos que recorrer.

Si quieres aprender más sobre yield y las funciones generadoras, pincha aquí.

Sobre mi

👋 Mi nombre es Alber, soy Backend PHP/Python/Node.js Developer y de vez en cuando enredo también en el Frontend.

Saber más

Nos tomamos en serio tu privacidad

Utilizamos cookies propias y de terceros para mejorar la experiencia del usuario a través de su navegación. Si pulsas entendido aceptas su uso. Ver política de cookies.