天天看點

轉載:為什麼Python中“2==2>1”結果為True

在Python中,你可能會發現這樣一個奇怪的現象:

>>> 2 == 2 > 1
True
>>> (2 == 2) > 1
False
>>> 2 == (2 > 1)
False      

為什麼會出現

2==2>1

的結果為True?如果說這是運算符的優先級問題,那麼後兩個式子為什麼又都是False?

實際上這涉及到了Python的

鍊式對比(ChainedComparisons)

。在其他語言中,有一個變量

x

,如果要判斷x是否大于1,小于5,可能需要這樣寫代碼:

if (x > 1 and x < 5)      

但是在Python中,可以這樣寫代碼:

if 1 < x < 5      

Python能夠正确處理這個鍊式對比的邏輯。回到最開始的問題上,

==

等于符号和

<

小于符号,本質沒有什麼差別。是以實際上

2==2>1

也是一個鍊式對比的式子,它相當于

2==2and2>1

。此時,這個式子就等價于

True and True

。是以傳回的結果為True。

關于鍊式對比,可以看官方文檔:https://docs.python.org/3/reference/expressions.html#comparisons