[Python-Dev] PEP 492 vs. PEP 3152, new round

Guido van Rossum guido at python.org
Fri Apr 24 20:08:03 CEST 2015


On Fri, Apr 24, 2015 at 11:03 AM, Ethan Furman <ethan at stoneleaf.us> wrote:

> On 04/24, Yury Selivanov wrote:
> > On 2015-04-24 1:03 PM, Guido van Rossum wrote:
>
> >> Ditto for `__aiter__` and `__anext__`. I guess this means that the async
> >> equivalent to obtaining an iterator through `it = iter(xs)` followed by
> >> `for x over it` will have to look like `ait = await aiter(xs)` followed
> by
> >> `for x over ait`, where an iterator is required to have an `__aiter__`
> >> method that's an async function and returns self immediately. But what
> if
> >> you left out the `await` from the first call? I.e. can this work?
> >> ```
> >> ait = aiter(xs)
> >> async for x in ait:
> >>      print(x)
> >
> > With the current semantics that PEP 492 proposes, "await"
> > for "aiter()" is mandatory.
> >
> > You have to write
> >
> >     ait = await aiter(xs)
> >     async for x in ait:
> >         print(c)
>
> As a new user to asyncio and this type of programming in general, 'await
> aiter'
> feels terribly redundant.
>

Yeah, but normally you would never do that. You'd just use `async for x in
xs`. I'm just bickering over the exact expansion of that.

-- 
--Guido van Rossum (python.org/~guido)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20150424/444af635/attachment.html>


More information about the Python-Dev mailing list