<br><br><div class="gmail_quote">On Sat, Dec 13, 2008 at 10:49 PM, Daniel Fetchinson <span dir="ltr"><<a href="mailto:fetchinson@googlemail.com">fetchinson@googlemail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
>> Is it a feature that<br>
>><br>
>> 1 or 1/0<br>
>><br>
>> returns 1 and doesn't raise a ZeroDivisionError? If so, what's the<br>
>> rationale?<br>
><br>
> Yes, it's a feature:<br>
><br>
> <a href="http://en.wikipedia.org/wiki/Short-circuit_evaluation" target="_blank">http://en.wikipedia.org/wiki/Short-circuit_evaluation</a><br>
><br>
> When you have "True or False", you know it's true by the time<br>
> you've got the first piece, so there's no need to evaluate the<br>
> 2nd piece.  The opposite is helpful too:<br>
><br>
>    lst = [some list or an empty list]<br>
>    ...<br>
>    if lst and lst[0] == 42:<br>
><br>
> This ensures that the "lst[0]" doesn't fail if lst is empty,<br>
> because lst evaluating to false (an empty list) short-circuits<br>
> preventing the evaluation of "lst[0]".<br>
<br>
Okay, it's clear, thanks.<br>
<br>
Let me just point out that unsuspecting people (like me) might rely on<br>
the whole expression to be evaluated and rely on exceptions being<br>
raised if needed.<br>
<br>
So from now on I will not do!</blockquote><div><br><br>If you want both expressions evaluated, you can use & and |, just like in C and Java (&& and || are used for short circuit evaluation in those languages).<br>
<br></div></div><br>