Это мой код:
In [2]: a = 11111111111111111111111111 In [3]: a = (int)(a) In [4]: type(a) Out[4]: long In [5]: a = int(a) In [6]: type(a) Out[6]: long
Почему после того, как я позвонил int на a, его тип все еще long, а не int?
int
a
long
С документы :
класс int (x = 0) класс int (x, base = 10) [...] Если аргумент находится за пределами целочисленного диапазона, функция возвращает длинный объект.
класс int (x = 0) класс int (x, base = 10)
[...] Если аргумент находится за пределами целочисленного диапазона, функция возвращает длинный объект.
С PEP 237 ,целые и длинные были в основном едины.Существует небольшая разница между этими двумя типами, и Python автоматически конвертирует большие числа в длинные при необходимости.См. Также Как Python управляет int и long? .