我已经查看了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
可以肯定的是,我确实希望这两次比较能够像他们一样返回True
和False
,我只是不明白为什么id没有不同。
答案 0 :(得分:4)
重新输入我的评论为"答案":
只是因为相同的内存被重用于对象:在最后两个语句中,你获取id的对象的生命周期不重叠,因此Python可以自由地(重新)使用为他们留下相同的记忆。