[pyar] Curiosidades del Python

Alejandro Santos listas en alejolp.com
Mar Oct 25 00:17:58 ART 2011


2011/10/25 Alejandro J. Cura <alecu en protocultura.net>:
> On Mon, Oct 24, 2011 at 23:57, Alejandro Santos <listas en alejolp.com> wrote:
>> 2011/10/24 Roberto Alsina <ralsina en netmanagers.com.ar>
>>> Porque alguien querría hacer eso?
>>
>> Qué loco, yield es una expresión. Siempre creí que era un statement.
>> Dando vueltas un rato por la doc de Python llegué al PEP 342. La idea
>> es poder comunicarse ida y vuelta con el generator, no solo que el
>> yield "dispare" valores sino tambien que los reciba de afuera.
>>
>
> Y gracias a que yield devino expresión en Python 2.5 es que podemos
> tener el defer.inlineCallbacks en twisted, sino no hubiera sido
> posible.
>

Las corutinas son un "syntactic sugar" más. No te niego que son muy
cómodas, pero decir que "no hubiera sido posible" es un poco fuerte.
Siempre es posible implementar el método send manualmente, usando
yield como statement.

Una versión de "corutinas de bajo presupuesto" de mi ejemplo anterior
sería algo así:

>>> def f(sender):
...     yield None
...     a = sender[0]
...     sender[0] = None
...     print "a: ", a
...
>>> sender = [None]
>>> b = f(sender)
>>> b.next()
>>> sender[0] = "asd"
>>> b.next()
a:  asd
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

-- 
Alejandro Santos



More information about the pyar mailing list