Python 中的is 運算子用於比較兩個整數的識別對象,這意味著它檢查它們是否引用記憶體中的相同物件。但是,在處理非快取整數時,is 運算子可能會以意想不到的方式運作。
如果對函數內的兩個整數計算 is 運算符,它將傳回 True,表示它們引用同一個物件。但是,如果在函數外部計算相同的 is 運算符,它將傳回 False,表示它們引用不同的物件。
這是因為 Python 處理整數快取的方式。對於 [-5, 256] 範圍內的整數,Python 會快取整數物件並重複使用它們以供後續引用。這意味著當您將這個範圍內的整數分配給函數內的多個變數時,它們都引用同一個快取對象,因此 is 運算子返回 True。
但是,當您在函數外部分配一個整數,它會建立一個新的整數物件並且不使用快取的物件。因此,當您在函數外部比較兩個整數時,它們會引用不同的對象,並且 is 運算子會傳回 False。
為了避免這種意外行為,建議使用相等運算子(==) 來比較整數的值,而不是 is 運算子。
以上是為什麼「is」運算子對於 Python 中函數內部和外部的非快取整數的行為不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!