整數「is」運算子的意外行為
Python 的「is」運算子用於比較兩個物件的身份。在給定的程式碼中,以下行為似乎出乎意料:
>>> a = 256 >>> b = 256 >>> a is b True # Expected result >>> a = 257 >>> b = 257 >>> a is b False # This is surprising, despite both values being equal.
要理解此行為,我們需要考慮 Python 的整數實作。對於小整數(特別是 -5 到 256 之間的整數),Python 將它們儲存為不可變物件。當多個變數引用這麼小的整數時,它們都指向同一個底層物件。
這解釋了第一個比較,其中 a 和 b 都是對同一物件的引用,因此 b 傳回 True。然而,對於大於 256 的整數,Python 將它們視為新對象,因此 a = 257 和 b = 257 創建單獨的對象,並且 a is b 正確返回 False。
為了避免依賴此實現細節,它是最好使用 ==(相等運算符)來比較兩個任意對象,該運算符檢查對象的值是否相等,無論其身份如何。
以上是為什麼 Python 的「is」運算子在處理整數時會出現異常行為?的詳細內容。更多資訊請關注PHP中文網其他相關文章!