How does Python manage int and long?

integer, python

Solution

`int` and `long` were "unified" a few versions back. Before that it was possible to overflow an int through math ops.

3.x has further advanced this by eliminating long altogether and only having int.

- Python 2: `sys.maxint` contains the maximum value a Python int can hold.

- On a 64-bit Python 2.7, the size is 24 bytes. Check with `sys.getsizeof()`.

- Python 3: `sys.maxsize` contains the maximum size in bytes a Python int can be.

- This will be gigabytes in 32 bits, and exabytes in 64 bits.

- Such a large int would have a value similar to 8 to the power of `sys.maxsize`.

Problem

Does anybody know how Python manage internally int and long types? - Does it choose the right type dynamically? - What is the limit for an int? - I am using Python 2.6, Is is different with previous versions? How should I understand the code below? ``` >>> print type(65535) <type 'int'> >>> print type(65536*65536) <type 'long'> ``` Update: ``` >>> print type(0x7fffffff) <type 'int'> >>> print type(0x80000000) <type 'long'> ```

Original source