Iterators can implement a method called __length_hint__ that provides a hint
to certain internal routines (such as list.extend) so they can operate more
efficiently. As far as I can tell, __length_hint__ is currently
undocumented. Should it be?
This has been discussed, and no, it is a implementation detail mostly
for the optimization of builtin iterators.
Right. That matches my vague recollection on the subject.
If so, are there any constraints on what an iterator should return? I can
think of 3 possible rules, each with advantages and disadvantages:
1. return your best guess
Yes.
BTW, the same rule also applies to __len__. IIRC, Tim proposed
to add that to the docs somewhere.
Perhaps Raymond can shed some light on these.
Can't guess the future of __length_hint__().
Since it doesn't have a slot, the attribute lookup
can actually slow down cases with a small number
of iterands.
The original idea was based on some research on
map/fold operations, noting that iterators can
sometimes be processed more efficiently if
accompanied by some metadata (i.e. the iterator has
a known length, consists of unique items, is sorted,
is all of a certain type, is re-iterable, etc.).
Raymond
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com