2015-08-08 100 views
2

標題說明了一切。例如1<2<3返回True2<3<1返回False爲什麼`a <b <c`在Python中工作?

它很好,但我無法解釋爲什麼它的工作原理......在文檔中我找不到它。它總是:expression boolean_operator expression,而不是兩個布爾運算符)。另外:a<b返回一個布爾值,並且boolean boolean_operator expression不能解釋行爲。

我確定解釋是(幾乎)很明顯,但我似乎很想念它。

+0

的Python解析'A

+0

它還將與任何兩個比較運算符,這意味着'0 <2範圍解決(3)'應無論怎麼看英文,都會回報'真'。 – NightShadeQueen

回答

9

這被稱爲操作員鏈接。文檔可在:

https://docs.python.org/2/reference/expressions.html#not-in

比較可以被任意鏈的,例如,x <ÿ< = z是等效於x < y和y < = Z,不同的是y爲只計算一次(但是在這兩種情況下,當x < y被發現是錯誤的時候根本不評估z)。

而且,如果你真的喜歡形式化定義:

形式上,如果abc,...,yz是表情和op1op2,...,opN是比較運算符,那麼a op1 b op2 c ... y opN z相當於a op1 b and b op2 c and ... y opN z,除了每個表達式至多被評估一次。

+0

不錯。感謝文檔! – agtoever

2

您的多個運算符都具有相同的優先級,所以現在它將通過它們串行工作。 1<2<31<2其爲T,則2<3是T. 2<3<1有兩個部分,2<3是T,但3<1是F所以整個表達式評估爲F.

相關問題