>>> 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在這裏做什麼?
>>> 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在這裏做什麼?
這是一個連鎖的比較(見文檔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)
而'1 == True'是真實的,因爲'bool'是'int'的一個子類。 –
由於相同的原因,「3> True」也是如此。 –
那麼說@DSM。非常感謝。對於python來說,Hooray是爲了小小的便利而玩的優先規則。 – Andrew
比較鏈接不工作的方式,你認爲它。看到這裏的第三段:http://docs.python.org/3/reference/expressions.html#not-in –
而'1 == True'是True,因爲'bool'是'int'的一個子類,''真== 1'和'False == 0'。這也是爲什麼'3> True'是真的,而'0 False'不是.. –
另外,我不知道你是否犯這個錯誤,錯誤的是做類似'if 3> 2 == True:',當他們的意思是'如果3> 2:'。你幾乎從不想測試在Python中是否顯式地使用== == True。 –