Python是否在彼此较近的内存位置存储类似的对象?
因为类似对象的id
(例如lists
和tuples
)比str
类型的对象更接近彼此。
答案 0 :(得分:4)
不,当然除了巧合。虽然这是高度实现和特定于环境的,并且实际上存储器管理方案将页面大小的内存区域专用于相同类型的对象,但是我所知道的Python实现没有展示您描述的行为。除了小数字之外,它们有时会被隐藏在引擎盖下并且可能彼此相邻。
你所看到的可能是因为字符串文字是在导入时创建的(字节代码中的常量的一部分)和实习,而列表和元组(不包含文字)在运行代码时创建。如果在它们之间分配了一堆内存(特别是,如果它没有被释放),那么堆的状态可能会大不相同,以至于在您检查时会发出完全不同的地址。