4

Python 是否将相似的对象存储在彼此靠近的内存位置?因为id相似的对象,比如liststuples,比类型的对象更接近str

4

1 回答 1

4

不,当然除了巧合。虽然这是高度实现和环境特定的,并且实际上有内存管理方案将页面大小的内存区域专用于相同类型的对象,但我所知道的 Python 实现没有表现出您描述的行为。除了少数可能的例外,这些数字有时会缓存在引擎盖下,并且可能彼此相邻。

您所看到的可能是因为字符串文字是在导入时创建的(字节码中的一部分常量)并被实习,而列表和元组(不包含文字)是在运行代码时创建的。如果在两者之间分配了一堆内存(特别是如果它没有被释放),那么堆的状态可能会完全不同,以至于在您检查时会分发完全不同的地址。

于 2013-05-14T13:10:46.760 回答