None or 0

John Baxter jwbaxter at
Sat Sep 7 12:08:08 EDT 2002

In article <k7ip4-0p3.ln1 at>,
 Michael Stroder <michael at> wrote:

>  >>> repr(0 or None)
> 'None'
>  >>> repr(None or 0)
> '0'
>  >>> repr('' or None)
> 'None'
>  >>> repr(None or '')
> "''"
>  >>>
> Is it guaranteed to work like this or should that be avoided?

It seems very convenient to implement or (and and) by returning the 
first object which decides the answer.

My guess is that enough people are counting on the behavior that even if 
the underlying hardware or implementation language were to shift enough 
to make this implementation quite inconvenient, it would nonetheless 

Having said that, I tend not to like counting on it, because it 
stretches the extra-Python definition of the operators quite a bit.  
Particularly on the "and" side:

>>> print 5 and 1

Go into (English-speaking) classrooms, and you're going to hear chants 
of "5 and 1 is 6" not "5 and 1 is 1".


More information about the Python-list mailing list