В языке Python имеется два целочисленных типа, int
и bool
. И целые
числа, и логические значения являются неизменяемыми объектами,
но благодаря присутствию в языке Python комбинированных операторов
присваивания эта особенность практически незаметна. В логических
выражениях число 0
и значение False
представляют False
, а любое
другое целое число и значение True
представляют True
. В числовых
выражениях значение True
представляет 1
, а False
– 0
. Это означает,
что можно записывать весьма странные выражения, например, выражение i
+= True
увеличит значение i
на единицу. Естественно, более
правильным будет записывать подобные выражения как i += 1
.
Размер целого числа ограничивается только объемом памяти компьютера, поэтому легко можно создать и обрабатывать целое число, состоящее из тысяч цифр, правда, скорость работы с такими числами существенно медленнее, чем с числами, которые соответствуют машинному представлению.
Литералы целых чисел по умолчанию записываются в десятичной сис- теме счисления, но при желании можно использовать другие системы счисления:
>>> 14600926
14600926
>>> 0b110111101100101011011110
14600926
>>> 0o67545336
14600926
>>> 0xDECADE
14600926
Двоичные числа записываются с префиксом 0b
, восьмеричные – в
префиксом 0o
и шестнадцатеричные – с префиксом 0x
. В префиксах
допускается использовать символы верхнего регистра.
При работе с целыми числами могут использоваться обычные
математические функции и операторы, как показано в
табл. 1. Для арифметических операций +
, -
, /
,
//
, %
и **
имеются соответствующие комбинированные операторы
присваивания: +=
, -=
, /=
, //=
, %=
и **=
, где выражение
x op= y
является эквивалентом выражения x = x op y
.
Таблица 1. Арифметические операторы и функции
Синтаксис | Описание |
x + y | Складывает число x и число y |
x - y | Вычитает число y из числа x |
x * y | Умножает x на y |
x / y | Делит x на y – результатом всегда является значение типа float (или complex , если x или y является комплексным числом) |
x // y | Делит x на y , при этом усекает дробную часть, поэтому результатом всегда является значение типа int ; смотрите также функцию round() |
x % y | Возвращает модуль (остаток) от деления x на y |
x**y | Возводит x в степень y ; смотрите также функцию pow() |
-x | Изменяет знак числа x , если оно не является нулем, если ноль – ничего не происходит |
+x | Ничего не делает иногда используется для повышения удобочитаемости программного кода |
abs(x) | Возвращает абсолютное значение x |
divmod(x, y) | Возвращает частное и остаток деления x на y в виде кортежа двух значений типа int |
pow(x, y) | Возводит x в степень y ; то же самое что и оператор ** |
pow(x, y, z) | Более быстрая альтернатива выражению (x ** y) % z |
round(x, n) | Возвращает значение типа int , соответствующее значению x типа float , округленному до ближайшего целого числа (или значение типа float , округленное до \( n \)-го знака после запятой, если задан аргумент n ) |
Объекты могут создаваться путем присваивания литералов переменным,
например, x = 17
, или обращением к имени соответствующего типа как к
функции, например, x = int(17)
. Создание объекта посредством
использования его типа может быть выполнено одним из трех способов:
x = int()
создаст целое число 0
. Любые встроенные типы могут вызываться без аргументов.int
допускается передавать два аргумента, где первый аргумент – это строка с представлением целого числа, а второй аргумент – число основания системы счисления. Например, вызов int("A4", 16)
создаст десятичное значение 164
.Таблица 2. Функции преобразования целых чисел
Синтаксис | Описание |
bin(i) | Возвращает двоичное представление целого числа i в виде строки, например, bin(1980) == '0b11110111100' |
hex(i) | Возвращает шестнадцатеричное представление целого числа i в виде строки, например, hex(1980) == '0x7bc' |
int(x) | Преобразует объект x в целое число; в случае ошибки во время преобразования возбуждает исключение ValueError , а если тип объекта x не поддерживает преобразование в целое число возбуждает исключение TypeError . Если x является числом с плавающей точкой, оно преобразуется в целое число путем усечения дробной части. |
int(s, base) | Преобразует строку s в целое число; в случае ошибки возбуждает исключение ValueError . Если задан необязательный аргумент base , он должен быть целым числом в диапазоне от 2 до 36 включительно. |
oct(i) | Возвращает восьмеричное представление целого числа i в виде строки, например, oct(1980) == '0o3674' |
В табл. datatype:tbl:3 перечислены битовые операторы. Все битовые операторы
(|
, ^
, &
, <<
и >>
) имеют соответствующие комбинированные операторы
присваивания (|=
, ^=
, &=
, <<=
и >>=
), где выражение i op= j
является
логическим эквивалентом выражения i = i op j
в случае, когда обращение
к значению i
не имеет побочных эффектов.
Таблица 3. Функции преобразования целых чисел
Синтаксис | Описание |
i | j | Битовая операция OR (ИЛИ) над целыми числами i и j ; отрицательные числа представляются как двоичное дополнение |
i ^ j | Битовая операция XOR (исключающее ИЛИ) над целыми числами i и j |
i & j | Битовая операция AND (И) над целыми числами i и j |
i << j | Сдвигает значение i влево на j битов аналогично операции i * (2 ** j) без проверки на переполнение |
i >> j | Сдвигает значение i вправо на j битов аналогично операции i // (2 ** j) без проверки на переполнение |
\~i | Инвертирует биты числа i |
Существует два встроенных логических объекта: True
и False
. Как
и все остальные типы данных в языке Python (встроенные, библиотечные
или ваши собственные), тип данных bool
может вызываться как
функция – при вызове без аргументов возвращается значение False
,
при вызове с аргументом типа bool
возвращается копия аргумента,
а при вызове с любым другим аргументом предпринимается попытка
преобразовать указанный объект в тип bool
. Все встроенные типы
данных и типы данных из стандартной библиотеки могут быть
преобразованы в тип bool
, а добавить поддержку такого преобразования в
свои собственные типы данных не представляет никакой сложности. Ниже
приводится пара присваиваний логических значений и пара логических
выражений:
>>> t = True
>>> f = False
>>> t and f
False
>>> t and True
True
в языке Python имеется три логических оператора: and
, or
и
not
. Выражения с участием операторов and
и or
вычисляются в
соответствии с логикой сокращенных вычислений (short-circuit logic),
и возвращается операнд, определяющий значение всего
выражения, тогда как результатом оператора not
всегда
является либо True
, либо False
.