2017-06-05 46 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可以自由地(重新)为它们使用相同的内存。

相关问题