<br><br><div class="gmail_quote">On Sat, Jul 14, 2012 at 4:18 PM, Benjamin Peterson <span dir="ltr">&lt;<a href="mailto:benjamin@python.org" target="_blank">benjamin@python.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
2012/7/14 Alex Gaynor &lt;<a href="mailto:alex.gaynor@gmail.com">alex.gaynor@gmail.com</a>&gt;:<br>
&gt;<br>
&gt; Proposal<br>
&gt; ========<br>
&gt;<br>
&gt; This PEP proposes formally documenting ``__length_hint__`` for other<br>
&gt; interpreter and non-standard library Python to implement.<br>
&gt;<br>
&gt; ``__length_hint__`` must return an integer, and is not required to be accurate.<br>
&gt; It may return a value that is either larger or smaller than the actual size of<br>
&gt; the container. It may raise a ``TypeError`` if a specific instance cannot have<br>
&gt; its length estimated. It may not return a negative value.<br>
<br>
And what happens if you return a negative value?<br>
<br></blockquote><div><br></div><div>ValueError, the same as with len.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
&gt;<br>
&gt; Rationale<br>
&gt; =========<br>
&gt;<br>
&gt; Being able to pre-allocate lists based on the expected size, as estimated by<br>
&gt; ``__length_hint__``, can be a significant optimization. CPython has been<br>
&gt; observed to run some code faster than PyPy, purely because of this optimization<br>
&gt; being present.<br>
&gt;<br>
&gt; Open questions<br>
&gt; ==============<br>
&gt;<br>
&gt; There are two open questions for this PEP:<br>
&gt;<br>
&gt; * Should ``list`` expose a kwarg in it&#39;s constructor for supplying a length<br>
&gt;   hint.<br>
&gt; * Should a function be added either to ``builtins`` or some other module which<br>
&gt;   calls ``__length_hint__``, like ``builtins.len`` calls ``__len__``.<br>
<br>
Let&#39;s try to keep this as limited as possible for a public API.<br>
<span class="HOEnZb"><font color="#888888"><br></font></span></blockquote><div><br></div><div>Sounds reasonable to me!  Should we just go ahead and strip those out now?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class="HOEnZb"><font color="#888888">
<br>
--<br>
Regards,<br>
Benjamin<br>
</font></span></blockquote></div><br>Alex<br clear="all"><div><br></div>-- <br>&quot;I disapprove of what you say, but I will defend to the death your right to say it.&quot; -- Evelyn Beatrice Hall (summarizing Voltaire)<br>
&quot;The people&#39;s good is the highest law.&quot; -- Cicero<br><br>