首頁 > 後端開發 > Python教學 > 為什麼 Python 的「is」運算子在處理整數時會出現異常行為?

為什麼 Python 的「is」運算子在處理整數時會出現異常行為?

DDD
發布: 2024-12-28 04:13:11
原創
928 人瀏覽過

Why Does Python's

整數「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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板