python是否在连续的内存位置存储类似的对象?
Python是否将相似的对象存储在彼此较近的内存位置?python是否在连续的内存位置存储类似的对象?,python,memory-management,storage,contiguous,Python,Memory Management,Storage,Contiguous,Python是否将相似的对象存储在彼此较近的内存位置? 因为类似对象的id,比如列表和元组,比str类型的对象彼此更接近,当然,巧合除外。虽然这是高度特定于实现和环境的,而且实际上有一些内存管理方案将页面大小的内存区域专用于相同类型的对象,但我所知道的Python实现中没有任何一个呈现您描述的行为。除了少数可能的例外,它们有时被缓存在引擎盖下,并且可能彼此相邻 您所看到的可能是因为字符串文字是在导入时创建的(字节码中常量的一部分)并被插入,而列表和元组(不包含文字)是在运行代码时创建的。如果在这
因为类似对象的
id
,比如列表
和元组
,比str
类型的对象彼此更接近,当然,巧合除外。虽然这是高度特定于实现和环境的,而且实际上有一些内存管理方案将页面大小的内存区域专用于相同类型的对象,但我所知道的Python实现中没有任何一个呈现您描述的行为。除了少数可能的例外,它们有时被缓存在引擎盖下,并且可能彼此相邻
您所看到的可能是因为字符串文字是在导入时创建的(字节码中常量的一部分)并被插入,而列表和元组(不包含文字)是在运行代码时创建的。如果在这两者之间分配了一堆内存(特别是在没有释放内存的情况下),堆的状态可能会有很大的不同,以至于在检查时会发出完全不同的地址。唯一正确的答案是“这取决于实现”-python规范中没有定义内存使用。如果您认为它对您的代码可能很重要,那么您可能使用了错误的语言。它将variabl/object保留在dict中,dict元素不在内存分配中