Python 中的鍊式比較:揭開0
在Python 標準程式碼的深處,Python 2.6 的Queue.py中存在一個令人費解的構造:
def full(self): """Return True if the queue is full, False otherwise (not reliable!).""" self.mutex.acquire() n = 0 < self.maxsize == self._qsize() self.mutex.release() return n
為什麼這個表達式 0
鍊式比較:Python 的捷徑
Python 有一個稱為「鍊式比較」的獨特功能,使表達範圍比較更加簡潔。例如,以下內容等效於使用鍊式比較:
0 < x <= 5
在內部,這些鍊式比較的解釋不同。 Python 從左到右計算表達式,並傳回第一個計算結果為 False 的比較的值。在我們的例子中,0
相反,當引入括號時,它們會強制其中的表達式的計算在下一個之前完成應用比較。這否定了鍊式比較行為。結果,在加入括號後我們得到了預期的True 值:
(0 < 0) == 0 0 < (0 == 0)
因此,full() 方法的表達式0
self.maxsize == self._qsize(),如果self.maxsize為0,則計算結果為False,表示當大小限制設為0 時,佇列永遠不會滿。以上是為什麼 Python 中 `0 < 0 == 0` 的計算結果為 `False`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!