【发布时间】:2014-02-01 05:10:05
【问题描述】:
两个单独创建的可变列表具有不同的 id。
Python SHELL:(可变)
>>> mylist = ['spam', 'eggs']
>>> yourlist = ['spam', 'eggs']
>>> id(mylist), id(yourlist)
(49624456, 48910408)
虽然两个单独创建的不可变字符串具有相似的 id。
Python SHELL:(不可变)
>>> a = 10
>>> b = 10
>>> id(a), id(b)
(507099072, 507099072)
a 和 b 是否引用同一个对象?如果不是,为什么 id 相似?
mylist 和 yourlist 是指不同的对象吗?如果是,为什么他们有不同的 id。
【问题讨论】:
-
可变对象可能因此而发生变异,列表被创建了两次,但是如果您检查两个列表的元素 0 的 id,它们应该是相同的。由于列表是可变的,即使列表中的每个“单元格”都指向相同的“不可变”对象,您也不能期望列表指向同一个对象。不可变对象因此不能变异,python可以对其进行优化并防止重复。
标签: python immutability identifier concept mutability