2017-06-05 97 views
2

我已經看過this的問題,但我真的不明白爲什麼兩個id()調用返回相同的值,而is比較返回False即使id是相同的,爲什麼`is`返回False?

>>> [2,2,2] + [1] == [2,2,2,1] 
True 
>>> [2,2,2] + [1] is [2,2,2,1] 
False 
>>> id([2,2,2] + [1]) 
4396847688 
>>> id([2,2,2,1]) 
4396847688 

可以肯定,我沒有想到的兩個比較返回TrueFalse像他們那樣,我只是不明白爲什麼ID是不一樣。

+4

簡單地說,因爲相同的內存被重用於對象:在最後兩個語句中,您獲取的id對象的生存期不重疊,所以Python可以自由地(重新)爲它們使用相同的內存。 –

+0

這很有道理,謝謝!如果這是一個答案,我會接受它! – damian

回答

3

剛剛重新進入我的意見是「答案」:

很簡單,因爲相同的內存被重用的對象:在過去的兩個語句,其ID就是你獲取對象的壽命不重疊,所以Python可以自由地(重新)爲它們使用相同的內存。

相關問題