<br><br><div class="gmail_quote"><div dir="ltr">On Tue, Jun 26, 2018, 11:43 PM Jacco van Dorp <<a href="mailto:j.van.dorp@deonet.nl">j.van.dorp@deonet.nl</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">2018-06-26 17:34 GMT+02:00 Franklin? Lee <<a href="mailto:leewangzhong%2Bpython@gmail.com" target="_blank">leewangzhong+python@gmail.com</a>>:<br>
> Caller detects: The caller checks length before calling the dunder. If there<br>
> is no dunder, it doesn't check. Are there real-world cases where length is<br>
> not defined on an iterable collection?<br>
<br>
Generators dont have a __len__ method. And they might have min/max<br>
that can be calculated without iterating over the entire thing. The<br>
builtin range() is an example. (but also an exception, since it does<br>
have a __len__ attribute. This is specifically part of range and not<br>
generators in general, though.).<br>
<br>
However, range() is an example where the dunders could be valuable -<br>
max(range(1e7)) already takes noticable time here, while it's rather<br>
easy to figure it out from start stop and step, just like len now does<br>
for it.<br></blockquote></div><div><br></div><div>Have you ever written ``max(range(x))`` in production code?</div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
</blockquote></div>