Простой Python. Современный стиль программирования (Любанович) - страница 23

:

>>>> int(98.6)

>98

>>>> int(1.0e4)

>10000

Наконец, рассмотрим пример преобразования текстовой строки (со строками вы познакомитесь через несколько страниц), которая содержит только цифры и, возможно, знаки + и —:

>>>> int('99')

>99

>>>> int('-23')

>-23

>>>> int('+12')

>12

Преобразование целого числа в целое число ничего не меняет и совсем не вредит:

>>>> int(12345)

>12345

Если вы попробуете преобразовать что-то непохожее на число, сгенерируется исключение:

>>>> int('99 bottles of beer on the wall')

>Traceback (most recent call last):

>··File "", line 1, in

>ValueError: invalid literal for int() with base 10: '99 bottles of beer on the wall'

>>>> int('')

>Traceback (most recent call last):

>··File "", line 1, in

>ValueError: invalid literal for int() with base 10: ''

Текстовая строка в предыдущем примере начинается с корректных символов-цифр (99), но продолжается теми символами, которые функция int() обработать не может.


Мы рассмотрим исключения в главе 4. Пока нужно только помнить, что с помощью исключений Python извещает вас о том, что произошла ошибка, вместо того чтобы прервать выполнение программы, как поступают некоторые другие языки. Вместо того чтобы показывать вам лишь правильные примеры, я продемонстрирую множество вариантов исключений, чтобы вы знали, как поступает Python, когда что-то идет не так.


Функция int() будет создавать целые числа из чисел с плавающей точкой или строк, состоящих из цифр, но она не будет обрабатывать строки, содержащие десятичные точки или экспоненты:

>>>> int('98.6')

>Traceback (most recent call last):

>··File "", line 1, in

>ValueError: invalid literal for int() with base 10: '98.6'

>>>> int('1.0e4')

>Traceback (most recent call last):

>··File "", line 1, in

>ValueError: invalid literal for int() with base 10: '1.0e4'

Если вы смешаете численные значения, Python будет пытаться автоматически преобразовать их:

>>>> 4 + 7.0

>11.0

Булево значение False рассматривается как 0 или 0.0, когда оно смешивается с целыми числами или числами с плавающей точкой, а True — как 1 или 1.0:

>>>> True + 2

>3

>>>> False + 5.0

>5.0

Насколько объемен тип int?

В Python 2 размер переменной типа int был ограничен 32 битами. Этого было достаточно для того, чтобы сохранить любое целое число в диапазоне от –2 147 483 648 до 2 147 483 647.

Для переменных типа long выделялось еще больше места — 64 бита, что позволяло хранить значения в диапазоне от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807. В Python 3 тип long отсутствует, а переменная типа int может быть любого размера — даже больше 64 бит. Поэтому вы можете выполнить арифметические действия наподобие следующих (10**100 называется