【发布时间】:2020-04-19 02:18:45
【问题描述】:
当我检查id(10) 两次(int 类型的对象)时,解释器给出了相同的结果。
但是当我尝试使用tuple object (1,2,3) 时,我得到了不同的答案,尽管 int 和 tuple 都是不可变的。我能知道发生这种情况的原因吗?
【问题讨论】:
-
不要将文字作为图片发布
标签: python python-3.x python-2.7
当我检查id(10) 两次(int 类型的对象)时,解释器给出了相同的结果。
但是当我尝试使用tuple object (1,2,3) 时,我得到了不同的答案,尽管 int 和 tuple 都是不可变的。我能知道发生这种情况的原因吗?
【问题讨论】:
标签: python python-3.x python-2.7
ints 在 Python 中有一个非常特殊的行为,直到 257 为止,都没有分配新的对象。拿这个:
>>> a, b = 257, 257
>>> id(a)
140640774013296
>>> id(b)
140640774013296
但是当你这样做时:
>>> a = 258
>>> b = 258
>>> id(a)
140410944685744
>>> id(b)
140410944685872
请注意,id 是不同的,同样不适用于每次创建新对象的元组。
【讨论】: