为什么`is`返回False,即使id是相同的?

时间:2017-06-05 00:13:37

标签: python

我已经查看了this个问题,但我不明白为什么两个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没有不同。

1 个答案:

答案 0 :(得分:4)

重新输入我的评论为"答案":

只是因为相同的内存被重用于对象:在最后两个语句中,你获取id的对象的生命周期不重叠,因此Python可以自由地(重新)使用为他们留下相同的记忆。