2014-01-08 97 views
5
>>> 3 > 2 == True 
False #say what? 
>>> (3 > 2) == True 
True 
>>> 3 > (2 == True) 
True 
>>> 3 > 1 == True 
True 
>>> 3 > False 
True 

Python在其神祕的隱藏邏輯中做了什麼,使得第一條語句False,而其餘的是True有人可以向我解釋python在這裏做什麼?

+0

比較鏈接不工作的方式,你認爲它。看到這裏的第三段:http://docs.python.org/3/reference/expressions.html#not-in –

+2

而'1 == True'是True,因爲'bool'是'int'的一個子類,''真== 1'和'False == 0'。這也是爲什麼'3> True'是真的,而'0 False'不是.. –

+1

另外,我不知道你是否犯這個錯誤,錯誤的是做類似'if 3> 2 == True:',當他們的意思是'如果3> 2:'。你幾乎從不想測試在Python中是否顯式地使用== == True。 –

回答

13

這是一個連鎖的比較(見文檔here),同樣的方式,

>>> 1 < 2 < 3 
True 

>>> (1 < 2) and (2 < 3) 
True 

在這種情況下,我們有

>>> 3 > 2 == True 
False 

因爲

>>> (3 > 2) and (2 == True) 
False 

因爲

>>> (3 > 2), (2 == True) 
(True, False) 
+2

而'1 == True'是真實的,因爲'bool'是'int'的一個子類。 –

+0

由於相同的原因,「3> True」也是如此。 –

+0

那麼說@DSM。非常感謝。對於python來說,Hooray是爲了小小的便利而玩的優先規則。 – Andrew

相關問題