Friday 15 July 2011

python - Priority of operators: > and == -



python - Priority of operators: > and == -

this question has reply here:

why look 0 < 0 == 0 homecoming false in python? 9 answers

i'm trying guess operator has priority: > (greater than) or == (equal). experiment:

>>> 5 > 4 == 1 false

as far know, has 2 possible solutions.

>>> (5 > 4) == 1 true >>> 5 > (4 == 1) true

neither 1 returns false, how first code resolved python?

this has operator chaining. unlike c/c++ , other languages, python allows chain comparing operators in normal mathematics. documentation:

comparisons can chained arbitrarily, e.g., x < y <= z equivalent x < y , y <= z, except y evaluated 1 time (but in both cases z not evaluated @ when x < y found false).

so, expression:

5 > 4 == 1

is interpreted as:

5 > 4 , 4 == 1 # except 4 evaluated once.

which becomes:

true , false

which false.

using parenthesis changes how python interprets comparison. this:

(5 > 4) == 1

becomes:

true == 1

which true (see below why). same goes for:

5 > (4 == 1)

which becomes:

5 > false

which true.

because of pep 0285, bool made subclass of int , true == 1 while false == 0:

>>> issubclass(bool, int) true >>> true == 1 true >>> false == 0 true >>>

python boolean operators operator-precedence

No comments:

Post a Comment