[Python-ideas] Generators are iterators
Alexander Belopolsky
alexander.belopolsky at gmail.com
Fri Dec 12 21:14:44 CET 2014
On Fri, Dec 12, 2014 at 3:06 PM, Alexander Belopolsky <
alexander.belopolsky at gmail.com> wrote:
> On Fri, Dec 12, 2014 at 2:28 PM, Ethan Furman <ethan at stoneleaf.us> wrote:
>
>> > 3) there are essentially two (and a half) ways for python code authors
>> to write their own, custom TIIP:
>> > 1) write a class that has a __iter__ and __next__ methods that "do
>> the right thing"
>> > 2a) write a generator function
>> > 2b) write a generator expression
>>
>> 3) write a class with __getitem__ that supports integer indexing
>>
>
> This gets you a custom iterable. The corresponding iterator will be the
> buitin iterator type:
>
> >>> class X:
> ... __getitem__ = None
> ...
> >>> iter(X())
> <iterator object at 0x10b2a70b8>
>
The same logic applies to generators and I think this misconception is at
the root of the confusion in this thread. When you are writing a
generator function, you are not creating a custom TIIP. You are writing a
code object that Python knows how to convert into an instance of a built-in
TIIP (the generator type).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20141212/6d3c9496/attachment.html>
More information about the Python-ideas
mailing list