Se usa para funciones generadoras. Funciona como un return, pero la próxima vez que se llame el código continúa justo debajo de yield.
Código de ejemplo:
def contador_yield(max2): print "Inicio contador_yield" n = 0 while (n < max2): print "Deltro del while de contador_yield" yield n n +=1 print "Sigo dentro del metodo" print "Sigo dentro del metodo22" print "Sigo dentro del metodo233" c = contador_yield(3) print c.next() print "Ya he realizado la llamada" print c.next() print c.next() print c.next()
Salida:
Inicio contador_yield Deltro del while de contador_yield 0 Ya he realizado la llamada Sigo dentro del metodo Sigo dentro del metodo22 Sigo dentro del metodo233 Deltro del while de contador_yield 1 Sigo dentro del metodo Sigo dentro del metodo22 Sigo dentro del metodo233 Deltro del while de contador_yield 2 Sigo dentro del metodo Sigo dentro del metodo22 Sigo dentro del metodo233 Traceback (most recent call last): File "/home/carlos/workspace/test_yield.py", line 19, inprint c.next() StopIteration
Documentación:
El yield no contínua "debajo", simplemente continua en el propio yield, es decir, yield nunca llega a ejecutarse hasta que la función es llamada.
ResponderEliminarHola Daniel, con tu comentario queda más claro, el mio era más bien de "andar por casa" de cuando estuve haciendo pruebas. Saludos.
Eliminar