I think maybe some of the trouble here, particularly in teaching is the
word "is" (in English, not the Python keyword).

As in:

"A file object IS and iterator"
and
"A zip object IS an iterator"

I know in OO parlance, "is a" can be used to designate subclassing (or an
appropriate use for it) and it can be made a bit more generic to mean "has
the interface of" -- which is how we are using it here.

But in common language, there might be a bit of confusion:

something is an iterator among other things
vs
something is PRIMARILY an iterator

File objects are a good example:

A file object provides all sorts of things, and iteration is only a small
part of it. In fact, maybe due to my long history with working with
pre-iterator file objects (python 1.5! -- yes, I am that old) I see them as
fully featured objects that also happen to provide an iteration interface
to line-oriented access to text files as a convenience -- calling them "an
iterator" feels a bit odd.

Whereas things like the zip iterator, and many of the things in itertools,
do primarily (only) iteration -- calling them "an iterator" makes a huge
amount of sense. Even more so for things like list_iter, that are generally
hidden from the user, and exist only to provide iteration.

In fact, that's why I think file objects may be one of the worst ways to
introduce the iteration protocol to newbies. (though maybe because of the
confusion, it's a good example of why it matters to understand the
distinctions)

Iterables, on the other hand, usually provide a bunch of functionally other
than iterability -- and indeed, most are fully functional without the
iterator protocol at all. (maybe with ugly code :-) )

-CHB




On Fri, May 15, 2020 at 6:14 AM Steven D'Aprano <st...@pearwood.info> wrote:

> On Fri, May 15, 2020 at 05:58:16AM -0400, Ricky Teachey wrote:
>
> > Perhaps use the iter function name as the generic? "itered". As opposed
> to
> > "iterated" or "iterated over".
> >
> > Example:
> >
> > "the statement below iterates over an iterator, itered from a sequence"
>
> Or just avoid the issue:
>
> "The statement below iterates over a sequence"
>
> which is perfectly valid and correct.
>
> If we do feel the need to drill down into pedantic technical details,
> instead of making up ugly words that nobody will have any clue
> whatsoever what the meaning is[1], we could use one of many existing
> English words:
>
>     built from
>     formed from
>     constructed from
>     made from
>     fabricated from
>     created from
>     put together from
>
> etc. And notice I avoided using terms which imply that the sequence
> itself is transformed into an iterator, such as "converting into".
>
>
>
>
> [1] "Iter" is an old term for a passage, in particular an anatomical
> term for a passage in the brain, so "itered" would be the past tense of
> a verb to turn something into a passage.
>
>
> --
> Steven
> _______________________________________________
> Python-ideas mailing list -- python-ideas@python.org
> To unsubscribe send an email to python-ideas-le...@python.org
> https://mail.python.org/mailman3/lists/python-ideas.python.org/
> Message archived at
> https://mail.python.org/archives/list/python-ideas@python.org/message/CQM25AACCSW4AG3M6OG6DGTKCGHOVB4N/
> Code of Conduct: http://python.org/psf/codeofconduct/
>


-- 
Christopher Barker, PhD

Python Language Consulting
  - Teaching
  - Scientific Software Development
  - Desktop GUI and Web Development
  - wxPython, numpy, scipy, Cython
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/GCO7224VEMRUHLR2Z3DIS34WKOFJRGBD/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to