Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is ‘==‘ coming before ‘in’ in Python?

Tags:

python

The following code outputs False, when according to the Python Order of Operations it should output True (the order should be in -> ==, not the other way around). Why is == coming before in?

y = "33"
"3" in y == True

Output

False
like image 325
rob Avatar asked Nov 21 '18 13:11

rob


1 Answers

The existing answers give helpful advice that you shouldn't compare booleans to True because it's redundant. However, none of the answers actually answer the root question: "why does "3" in y == True evaluate to False?".

That question was answered in a comment by juanpa.arrivillaga:

Also, this is an instance of operator chaining, since == and in both count as comparison operators. So this is evaluated as ('3' in y) and (y == True)

In Python, comparison operators can be chained. For example, if you want to check that a, b, c, and d are increasing, you can write a < b < c < d instead of a < b and b < c and c < d. Similarly, you can check that they are all equal with a == b == c == d.

Chained comparisons are described in the Python documentation here:

Comparisons can be chained arbitrarily, e.g., x < y <= z is equivalent to x < y and y <= z, except that y is evaluated only once (but in both cases z is not evaluated at all when x < y is found to be false).

like image 165
k_ssb Avatar answered Oct 19 '22 23:10

k_ssb