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'> ```