В Python целые числа автоматически переключаются с представления фиксированного размера на int
представление ширины переменной, как long
только вы передадите значение sys.maxint
, которое равно 2 31 - 1 или 2 63 - 1 в зависимости от вашей платформы. Обратите внимание, что L
это добавляется здесь:
>>> 9223372036854775807
9223372036854775807
>>> 9223372036854775808
9223372036854775808L
Из руководства Python :
Числа создаются числовыми литералами или как результат встроенных функций и операторов. Необжитые целочисленные литералы (включая двоичные, шестнадцатеричные и восьмеричные числа) дают простые целые числа, если только они не обозначают слишком большое значение, чтобы быть представлены как простое целое число, и в этом случае они дают длинное целое число. Целочисленные литералы с 'L'
или 'l'
суффикс дают длинные целые числа ( 'L'
это предпочтительнее, потому что 1l
выглядит слишком много, как одиннадцать!).
Python очень сильно пытается притвориться, что его целые числа являются математическими целыми числами и неограничены. Он может, например, легко вычислить googol :
>>> 10**100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L