4

Why this code snippet is giving different size in bytes with two different functions. I am using 32 bit version of python 2.7.3

1) with dictionaries:-

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) with list:-

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) with tuple:-

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

Would anyone tell me why this kind of behaviour, when documentation of both function says that they return size of object in bytes.

0

1 Answer 1

4

From the sys docs:

getsizeof() calls the object’s sizeof method and adds an additional garbage collector overhead if the object is managed by the garbage collector.

I'm guessing that explains the discrepancy.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.