Interesting subsequent comparison:
>>> a = 1 >>> b = 10 >>> c = 100 >>> a < b < c True >>> (a < b) < c True
The following 2 code snippets are equal, which can explain why the above code works in that way.
if a < b < c: doSomething() if (a < b) and (b < c): doSomething()
How about booleans? Is True bigger than False?
>>> True < c True >>> True > c False >>> False < True True >>> False > True False
And I just noticed that True / False are 1 / 0 in one implementation of CPython 2.5?! According to official document, the True & False are special type called “bool” which should not be used to compare against other type.
>>> False == 0 True >>> True == 1 True >>> True == 2 False >>> False == 2 False
How about is?
>>> None is None is None True >>> (None is None) is None False >>> None is (None is None) False
Because is is also a comparison (not a binary operator)!!! It might be not that intuitive to figure out this situation especially when you are programming some logical expression with if.
Let’s do play again True and False and I believe this time you can get it through.
>>> True is True is True True >>> False is False True >>> (False is False) is False False
Check this if you wanna get more idea about Python’s expression.