need clarification on -0

Steven D'Aprano steve at
Sat Nov 28 10:18:17 CET 2009

On Fri, 27 Nov 2009 23:09:06 -0800, moijes12 wrote:

> Hi
> I know the value -0 is quite meaningless and makes little sense.

Actually, when it comes to floating point values, it is very useful to be 
able to distinguish between -0 and +0.

> But I
> was just fiddling.I am unable to figure out the below result
>>>> -0 and True
> 0 ----------> (Why is this 0 and not say True or False)

You need to know two things about Python:

(1) All values can be interpreted in a boolean context:

if None:
    print "this will never be printed"
    print "this is always printed"

False values include: None, 0, 0.0, "", [], {} and of course False.

True values include nearly everything else.

(2) `and` and `or` are short-cut operators. They return the first 
argument which unambiguously defines the result:

X and Y => X if X is a false value, and Y if X is a true value.
X or Y => X if X is a true value, and Y if X is a false value.

Why do `and` and `or` return objects other than True and False? This is 
especially useful when using `or` in situations like this:

process(main_list or fallback_list)

which will process the first list of the two which is not empty.


More information about the Python-list mailing list