標題說明了一切。例如1<2<3
返回True
和2<3<1
返回False
。爲什麼`a <b <c`在Python中工作?
它很好,但我無法解釋爲什麼它的工作原理......在文檔中我找不到它。它總是:expression boolean_operator expression
,而不是兩個布爾運算符)。另外:a<b
返回一個布爾值,並且boolean boolean_operator expression
不能解釋行爲。
我確定解釋是(幾乎)很明顯,但我似乎很想念它。
標題說明了一切。例如1<2<3
返回True
和2<3<1
返回False
。爲什麼`a <b <c`在Python中工作?
它很好,但我無法解釋爲什麼它的工作原理......在文檔中我找不到它。它總是:expression boolean_operator expression
,而不是兩個布爾運算符)。另外:a<b
返回一個布爾值,並且boolean boolean_operator expression
不能解釋行爲。
我確定解釋是(幾乎)很明顯,但我似乎很想念它。
這被稱爲操作員鏈接。文檔可在:
https://docs.python.org/2/reference/expressions.html#not-in
比較可以被任意鏈的,例如,x <ÿ< = z是等效於x < y和y < = Z,不同的是y爲只計算一次(但是在這兩種情況下,當x < y被發現是錯誤的時候根本不評估z)。
而且,如果你真的喜歡形式化定義:
形式上,如果
a
,b
,c
,...,y
,z
是表情和op1
,op2
,...,opN
是比較運算符,那麼a op1 b op2 c ... y opN z
相當於a op1 b and b op2 c and ... y opN z
,除了每個表達式至多被評估一次。
不錯。感謝文檔! – agtoever
您的多個運算符都具有相同的優先級,所以現在它將通過它們串行工作。 1<2<3
去1<2
其爲T,則2<3
是T. 2<3<1
有兩個部分,2<3
是T,但3<1
是F所以整個表達式評估爲F.
比較運營商可以被鏈接,根據語言參考
的Python解析'A
它還將與任何兩個比較運算符,這意味着'0 <2範圍解決(3)'應無論怎麼看英文,都會回報'真'。 – NightShadeQueen