Let's say it this way: I want to know what I am looking at when I browse through the code -- an asynchronous iterator, or a normal iterator. I want an explicit difference between these protocols, because they are different. Moreover, the below code is a perfectly valid, infinite iterable: class SomeIterable: def __iter__(self): return self async def __next__(self): return 'spam' I'm strong -1 on this idea. Yury On 2015-05-01 3:03 PM, Stefan Behnel wrote: > Yury Selivanov schrieb am 01.05.2015 um 20:52: >> I don't like the idea of combining __next__ and __anext__. >> In this case explicit is better than implicit. __next__ >> returning coroutines is a perfectly normal thing for a >> normal 'for' loop (it wouldn't to anything with them), >> whereas 'async for' will interpret that differently, and >> will try to await those coroutines. > Sure, but the difference is that one would have called __aiter__() first > and the other __iter__(). Normally, either of the two would not exist, so > using the wrong loop on an object will just fail. However, after we passed > that barrier, we already know that the object that was returned is supposed > to obey to the expected protocol, so it doesn't matter whether we call > __next__() or name it __anext__(), except that the second requires us to > duplicate an existing protocol. > > This has nothing to do with implicit vs. explicit. > > Stefan > > > _______________________________________________ > Python-Dev mailing list > Python-Dev at python.org > https://mail.python.org/mailman/listinfo/python-dev > Unsubscribe: https://mail.python.org/mailman/options/python-dev/yselivanov.ml%40gmail.com
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4