iteradores.

Hernan Martínez Foffani hernan en orgmf.com.ar
Sab Mayo 21 15:33:39 CEST 2005


> Una cosa mas, "corutina". Se puede explicar en dos parrafos lo que es
> eso ? Si es muy largo, puedes pasarme alguna direccion para leer que
> lo explique aceptablemente ? Ya me he tropecedo con ello algunas
> veces y no tengo claro de que me hablan.

Tendré que resucitar algunas neuronas, hace casi 20 años que dejé
la facu. ;-)   Veamos como me sale...

Una corutina es una subrutina que retorna al llamador antes de
completar su proceso.  En realidad las subrutinas son un tipo de
corutina que solo retornan una sola vez.  En teoría los
generadores de python son semi-corutinas, porque el llamador
no le puede inyectar datos al generador.

Esto se podría cambiar mediante:

   def generador():                def corutina():
       a = 0                           a = 0
       yield a + 10       vs.          a = yield a + 10
       yield a + 10                    a = yield a + 10
       yield a + 10                    a = yield a + 10

   for x in generador():           for x in corutina():
       print x                         print x
       continue                        continue x + 1

El caso del generador imprime 10, 10 y 10.  El continue
de la izquierda no hace falta pero lo pongo por simetría.

Una imaginaria implementación en python podría permitir
poner una expresión luego del continue.  El resultado de
esa expresión sería el valor retornado por yield.
En este supuesto caso imprimiría: 10, 21 y 32.

Aún así para que las corutinas sean completas el llamador
no debe tener una "jerarquía" especial.  Es decir que una
corutina pueda llamar a otra ("collamada".)

> Me resistia a apuntarme a las lista de python en ingles por que no lo
> leo con demasiada soltura y me es imposible escribirlo, pero por lo
> que veo me voy a tener que suscribir para estar al dia de lo que
> hacen con el interprete.

Cada 15 días suele aparecer un resumen muy bien editado y escrito
sobre la actividad de la lista http://www.python.org/dev/summary/
(Incluye un RSS feed.)

Saludos,
-H.




Más información sobre la lista de distribución Python-es