5 回答
TA貢獻2051條經驗 獲得超10個贊
看看這個:
>>> a = 256
>>> b = 256
>>> id(a)
9987148
>>> id(b)
9987148
>>> a = 257
>>> b = 257
>>> id(a)
11662816
>>> id(b)
11662828
編輯:這是我在Python 2文檔中找到的,“普通整數對象”(Python 3也是如此):
當前實現為-5到256之間的所有整數保留一個整數對象數組,當您在該范圍內創建一個int時,實際上只返回對現有對象的引用。因此應該可以更改值1.我懷疑在這種情況下Python的行為是未定義的。:-)
TA貢獻1874條經驗 獲得超12個贊
這取決于你是否想要看兩件事是否相同,或者是同一個對象。
is檢查它們是否是同一個對象,而不僅僅是相同的。小的int可能指向相同的內存位置以提高空間效率
In [29]: a = 3
In [30]: b = 3
In [31]: id(a)
Out[31]: 500729144
In [32]: id(b)
Out[32]: 500729144
您應該==用來比較任意對象的相等性。您可以使用__eq__和__ne__屬性指定行為。
TA貢獻1862條經驗 獲得超6個贊
由于您可以檢查源文件intobject.c,因此Python會緩存小整數以提高效率。每次創建對小整數的引用時,都指的是緩存的小整數,而不是新對象。257不是一個小整數,因此它被計算為一個不同的對象。
最好是==為此目的使用。
添加回答
舉報
