【发布时间】:2013-06-12 09:01:28
【问题描述】:
>>> x = [1,2,3]
>>> y = [1,2,3]
>>> print id(x),id(y)
43259384 43258744
>>> x = 1
>>> y = 1
>>> print id(x),id(y)
5417464 5417464
如您所见,第一次打印的 ID 不同,但第二次打印的 ID 相同。为什么?是什么决定了 2 个变量的 ID 在被赋予相同的值后是否相同?
【问题讨论】:
-
@IgnacioVazquez-Abrams 这个问题是关于列表的,它不应该有相同的
id。链接没有解释这个问题的全部内容 -
数字是不可变的。因此,Python 实现可能利用实习(如相关文章中的答案中所述)-Java 对一组有限的整数做同样的事情。其他语言实现(即 ELisp 和 MRI Ruby)使用“立即值”作为另一种优化,在比较身份时具有相同的结果。
-
@jamylak 列表没有相同的 id。
-
@user2246674 只是将其发布为答案而不是评论;)