Updates to PEP-0424 following the discussion.
This commit is contained in:
parent
8395ac1f02
commit
b01cd39186
23
pep-0424.txt
23
pep-0424.txt
|
@ -14,8 +14,8 @@ Abstract
|
|||
========
|
||||
|
||||
CPython currently defines an ``__length_hint__`` method on several types, such
|
||||
as various iterators. This method is then used by various other functions (such as
|
||||
``map``) to presize lists based on the estimated returned by
|
||||
as various iterators. This method is then used by various other functions (such
|
||||
as ``map``) to presize lists based on the estimated returned by
|
||||
``__length_hint__``. Types can then define ``__length_hint__`` which are not
|
||||
sized, and thus should not define ``__len__``, but can estimate or compute a
|
||||
size (such as many iterators).
|
||||
|
@ -26,10 +26,11 @@ Proposal
|
|||
This PEP proposes formally documenting ``__length_hint__`` for other
|
||||
interpreter and non-standard library Python to implement.
|
||||
|
||||
``__length_hint__`` must return an integer, and is not required to be accurate.
|
||||
It may return a value that is either larger or smaller than the actual size of
|
||||
the container. It may raise a ``TypeError`` if a specific instance cannot have
|
||||
its length estimated. It may not return a negative value.
|
||||
``__length_hint__`` must return an integer (else a TypeError is raised), and is
|
||||
not required to be accurate. It may return a value that is either larger or
|
||||
smaller than the actual size ofthe container. It may raise a ``TypeError`` if a
|
||||
specific instance cannot have its length estimated. It may not return a
|
||||
negative value (else a ValueError is raised).
|
||||
|
||||
Rationale
|
||||
=========
|
||||
|
@ -38,16 +39,6 @@ Being able to pre-allocate lists based on the expected size, as estimated by ``_
|
|||
observed to run some code faster than PyPy, purely because of this optimization
|
||||
being present.
|
||||
|
||||
Open questions
|
||||
==============
|
||||
|
||||
There are two open questions for this PEP:
|
||||
|
||||
* Should ``list`` expose a kwarg in it's constructor for supplying a length
|
||||
hint.
|
||||
* Should a function be added either to ``builtins`` or some other module which
|
||||
calls ``__length_hint__``, like ``builtins.len`` calls ``__len__``.
|
||||
|
||||
Copyright
|
||||
=========
|
||||
|
||||
|
|
Loading…
Reference in New Issue