1 or 1/0 doesn't raise an exception

Tim Chase python.list at tim.thechases.com
Sun Dec 14 03:23:53 CET 2008


> Is it a feature that
> 
> 1 or 1/0
> 
> returns 1 and doesn't raise a ZeroDivisionError? If so, what's the rationale?

Yes, it's a feature:

http://en.wikipedia.org/wiki/Short-circuit_evaluation

When you have "True or False", you know it's true by the time 
you've got the first piece, so there's no need to evaluate the 
2nd piece.  The opposite is helpful too:

   lst = [some list or an empty list]
   ...
   if lst and lst[0] == 42:

This ensures that the "lst[0]" doesn't fail if lst is empty, 
because lst evaluating to false (an empty list) short-circuits 
preventing the evaluation of "lst[0]".

-tkc





More information about the Python-list mailing list