【发布时间】:2019-02-21 13:08:39
【问题描述】:
在工作的时候,我注意到一件奇怪的事情:
from sys import getsizeof as gs
list1=[1]
list2=list([1])
list1==list2 #true
gs(list1) #80. (I guess 72 overhead +8 of the int)
gs(list2) #104. (I guess 72 + 8 as above + 24 of...?)
list3=[1,2,3,4,5]
list4=list(list3)
gs(list3) #112
gs(list4) #136
所以总是有这 24 个字节的差异,我无法真正理解它们的来源。
这肯定与内部有关,但谁能解释一下幕后发生了什么?
【问题讨论】:
-
听起来类似于我前段时间问的一个问题:stackoverflow.com/a/54445004/4349415 - 虽然我问的是副本的大小,而不是构造函数的差异,但在引擎盖下它可能是相关的。跨度>
-
因为这是探测实现细节,如果你添加你的 python 实现和使用的 Python 版本作为标签,它会很有用(特别是对于验证)。例如如果您使用的是 CPython 3.7,则为 CPython 和 Python-3.7。
标签: python list memory-management python-internals