miércoles, 19 de septiembre de 2012

Uso de Yield en Python

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, in 
     print c.next()
 StopIteration

Documentación:

Blog Python Manía. Uso de yield

Python Doc#yield

2 comentarios:

  1. 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.

    ResponderEliminar
    Respuestas
    1. Hola 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

Related Posts Plugin for WordPress, Blogger...