首页 > 解决方案 > int 和 tuple 的对象内存分配

问题描述

在此处输入图像描述

当我检查id(10)两次(int类型的对象)时,解释器给出了相同的结果。但是,当我尝试对 进行相同操作时tuple object (1,2,3),尽管 int 和 tuple 都是不可变的,但我得到了不同的答案。我能知道发生这种情况的原因吗?

标签: pythonpython-3.xpython-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 是不同的,同样不适用于每次创建新对象的元组。


推荐阅读