解释这个行为

时间:2014-06-13 02:51:29

标签: python

print id ([]) == id([])
>>> True

为什么呢? Because

  

id([])创建一个列表,获取id,并释放列表。该   第二次它再次创建一个列表,但“把它放在同一个   放置“因为没有其他事情发生。身份证只在期间有效   对象的生命周期,在这种情况下,它的生命周期几乎为零

那么这里的区别是什么?

print id ({}) == id([])
>>> False

不应该创建一个dict,获取id并处理dict,然后创建一个列表将它放在同一个因为没有其他更改?

2 个答案:

答案 0 :(得分:2)

列表和词典不存储在相同的内存区域中,因此它们彼此之间会有不同的ID。两个相继创建和释放的阵列将获得相同的ID,因此两个序列也会得到相同的ID,但是这些序列不会获得与阵列相同的ID。

>>> print id([])
3073720876
>>> print id([])
3073720876
>>> print id({})
3073762412
>>> print id({})
3073762412

答案 1 :(得分:1)

你已经击中了头部。 创建dict 。后者创建了一个list,解释了这种行为:

>>> [] == {}
False
>>> id([]) == id({})
False
>>> 

>>> id([])
4301980664
>>> id({})
4298601328
>>> 

列表和词典不以相同的方式存储,因此两种不同的类型不会返回相同的内容。但是,两个列表或两个词组返回相同的内容。