4

为什么此代码片段使用两个不同的函数给出不同的字节大小。我正在使用 32 位版本的 python 2.7.3

1)用字典: -

from sys import getsizeof
l = range(20)            
d = {k:v for k,v in enumerate(l)}    #creating a dict
d.__sizeof__()   #gives size in bytes 
508              #size of dictionary 'd' in bytes

getsizeof(d)
524              #size of same dictionary 'd' in bytes (which is different then above)

2)与列表: -

from sys import getsizeof
l = range(20)
l.__sizeof__()   
100           #size of list 'l' in bytes

getsizeof(l)
116           #size of same list 'l' in bytes

3) 使用元组:-

from sys import getsizeof
t = tuple(range(20))
t.__sizeof__()
92             #size of tuple 't' in bytes

getsizeof(t)
108            #size of same tuple 't' in bytes

当两个函数的文档都说它们以字节为单位返回对象的大小时,有人会告诉我为什么会出现这种行为。

4

1 回答 1

4

系统文档

如果对象由垃圾收集器管理,getsizeof() 调用对象的sizeof方法并增加额外的垃圾收集器开销。

我猜这解释了差异。

于 2013-08-08T18:19:40.830 回答