How do I determine the size of an object in Python?
Question: In C, we can find the size of an `int`, `char`, etc. I want to know how to get
size of objects like a string, integer, etc. in Python.

Related question: [How many bytes per element are there in a Python list
(tuple)?](http://stackoverflow.com/questions/135664/how-many-bytes-per-
element-are-there-in-a-python-list-tuple)

I am using an XML file which contains size fields that specify the size of
value. I must parse this XML and do my coding. When I want to change the value
of a particular field, I will check the size field of that value. Here I want
to compare whether the new value that I'm gong to enter is of the same size as
in XML. I need to check the size of new value. In case of a string I can say
its the length. But in case of int, float, etc. I am confused.


Answer: Just use the
[sys.getsizeof](http://docs.python.org/library/sys.html#sys.getsizeof)
function defined in the `sys` module.

> `sys.getsizeof(object[, default])`:
>
> Return the size of an object in bytes. The object can be any type of object.
> All built-in objects will return correct results, but this does not have to
> hold true for third-party extensions as it is implementation specific.
>
> The `default` argument allows to define a value which will be returned if
> the object type does not provide means to retrieve the size and would cause
> a `TypeError`.
>
> `getsizeof` calls the object’s `__sizeof__` method and adds an additional
> garbage collector overhead if the object is managed by the garbage
> collector.

Usage example, in python 3.0:

    
    
    >>> import sys
    >>> x = 2
    >>> sys.getsizeof(x)
    14
    >>> sys.getsizeof(sys.getsizeof)
    32
    >>> sys.getsizeof('this')
    38
    >>> sys.getsizeof('this also')
    48
    

If you are in python < 2.6 and don't have `sys.getsizeof` you can use [this
extensive module](http://code.activestate.com/recipes/546530/) instead. Never
used it though.

