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
可以肯定,我没有想到的两个比较返回True
和False
像他们那样,我只是不明白为什么ID是不一样。
简单地说,因为相同的内存被重用于对象:在最后两个语句中,您获取的id对象的生存期不重叠,所以Python可以自由地(重新)为它们使用相同的内存。 –
这很有道理,谢谢!如果这是一个答案,我会接受它! – damian