Python 2 definirá automaticamente o tipo com base no tamanho do valor. Um guia de valores máximos pode ser encontrado abaixo.
O valor máximo do Int padrão em Python 2 é 65535, qualquer coisa acima disso será um longo
Por exemplo:
>> print type(65535)
<type 'int'>
>>> print type(65536*65536)
<type 'long'>
No Python 3, o tipo de dados longo foi removido e todos os valores inteiros são tratados pela classe Int. O tamanho padrão do Int dependerá da arquitetura da CPU.
Por exemplo:
- Sistemas de 32 bits, o tipo de dados padrão para inteiros será 'Int32'
- Sistemas de 64 bits, o tipo de dados padrão para inteiros será 'Int64'
Os valores mín. / Máx. De cada tipo podem ser encontrados abaixo:
- Int8: [-128,127]
- Int16: [-32768,32767]
- Int32: [-2147483648,2147483647]
- Int64: [-9223372036854775808,9223372036854775807]
- Int128: [-170141183460469231731687303715884105728,170141183460469231731687303715884105727]
- UInt8: [0,255]
- UInt16: [0,65535]
- UInt32: [0,4294967295]
- UInt64: [0,18446744073709551615]
- UInt128: [0,340282366920938463463374607431768211455]
Se o tamanho do seu Int exceder os limites mencionados acima, o python mudará automaticamente o seu tipo e alocará mais memória para lidar com este aumento nos valores mínimo / máximo. Enquanto em Python 2, ele seria convertido em 'longo', agora apenas se converte no próximo tamanho de Int.
Exemplo: se você estiver usando um sistema operacional de 32 bits, o valor máximo de um Int será 2147483647 por padrão. Se um valor de 2147483648 ou mais for atribuído, o tipo será alterado para Int64.
Existem diferentes maneiras de verificar o tamanho do int e sua alocação de memória. Nota: No Python 3, o uso do método interno type () sempre retornará, <class 'int'>
não importa o tamanho Int que você esteja usando.