Операторы языка Python — это те инструменты, которые используются для выполнения различных действий с переменными, а также числовыми и другими значениями, которые называются операндами, то есть объектами, над которыми выполняются операции. Операторы делятся на несколько типов, в зависимости от того, какие действия выполняют. Вот какие операторы используются в Python:
- арифметические,
- сравнения,
- присваивания,
- тождественности,
- принадлежности,
- логические,
- побитовые.
В этой статье-справочнике подробно рассмотрим каждый из них и приведем примеры.
Арифметические
Для сложения, вычитания, умножения и деления используются, соответственно, +, -, * и /.
Для возведения в степень — **.
Для целочисленного деления без остатка — //.
% выдает остаток, то есть выполняет деление по модулю:
Сравнения
Таких операторов выражения в Python шесть: >, <, >=, <=, ==, !=. Обратите внимание, что «равно» в Питоне при сравнении записывается так: ==, потому что один знак «равно» означает присвоение значения (об этом в следующей главе). Для выражения «не равно» используется сочетание символов !=. При сравнении значений интерпретатор языка будет выдавать ответы True и False в зависимости от того, являются ли выражения истинными или ложными. Примеры:
Облачные серверы
по всему миру с почасовой оплатой.
Присваивания
Для присвоения значений переменным используется один знак «равно»:
Также предусмотрены удобные конструкции для совмещения всех арифметических действий с одновременным присваиванием полученного значения: +=, -=, *=, /=, //=, %=. Например:
Мы задали переменную сars и присвоили ей значение 5, затем добавили еще 7 с одновременным присвоением нового значения. Конечно, можно вместо cars += 7 написать и так:
Ошибки нет, но первый вариант более компактный. Посмотрим, как работают другие действия одновременно с присваиванием:
Обратите внимание, что в последнем случае мы получили не целое значение, int, а с запятой, float.
Тождественности
Таких операторов в Python 2: is и is not. Как и в английском, первый означает (это) есть, а второй — это не. Ответами интерпретатора, как и в случае со сравнениями, будут True или False.
Разбираемся, что произошло в последних двух операциях. В первом случае (55 is '55') сравнивалось целое число и строка, поэтому интерпретатор выдал False, а во втором ('55' is "55") оба операнда представляли собой строки, поэтому было выдано True. Заметьте, что Питону не важно, использует ли программа одинарные или двойные кавычки: оба варианта синтаксически допустимы, поэтому результат тождества оказался истинным.
Принадлежности
Этих операторов тоже только два: in и not in. Они проверяют, есть или нет определенное значение в какой-либо последовательности. Например:
В последнем случае мы задействовали логический оператор (and), к рассмотрению которых и переходим.
Логические
В Питоне есть три логических оператора: and (и), or (или), а также not (не). and работает следующим образом: True возвращается только в том случае, если все операнды истинны. При этом обрабатываться может сколько угодно значений. Используем пример из главы выше:
Как видим, значения 'house' в строке не оказалось, поэтому интерпретатор выдал False. Те же операции можно производить и над целочисленными значениями:
Всё верно, потому что одно из выражений ложно, а and требует, чтобы истинными были все условия.
or действует по-другому: выражение признается истинным в том случае, если истинно хотя бы одно из его значений. Поэтому, если в предыдущем примере мы заменим операторы and на or, то получим следующий результат:
22 больше 21 и при этом для операции or не важно, что первое выражение ложно.
А вот как работает not:
Из примера видно, что not переворачивает логические значения, меняя True на False и наоборот.
Побитовые
Побитовые (или битовые) операторы используются в Python для изменения объектов на уровне битов. Их всего пять (сдвиговые принадлежат к одному типу, поскольку различаются только направлением сдвига):
& (AND)| (OR)^ (XOR)~ (NOT)<<и>>(сдвиговые)
Битовые операторы основаны на принципах Булевой логики, поэтому действуют следующим образом:
& (AND) возвращает 1, если 1 есть в обоих операндах, в остальных случаях 0:
| (OR) возвращает 1, если 1 есть в одном из операндов, иначе вернет 0:
^ (XOR) возвращает 1, если операнды различаются, и 0, если они одинаковы:
~ (NOT) переворачивает биты, преобразуя положительные значения в отрицательные со сдвигом на единицу следующим образом:
<< и >> сдвигают биты на определенное количество, которое указывается справа:
Для понимания сдвигов давайте разложим значения на биты, добавив, где нужно, разряд для удобства:
Поэтому, сдвигая в единице разряд влево, мы получаем 2, а если вправо, то 0. А если на два разряда?
Сдвинув единицу на два разряда влево, мы получили 4, потому что 4 в битовом представлении будет 100. Сдвиг вправо на любое число разрядов всё равно дает нам ноль, так как бит «обнуляется» в любом случае.
Больше информации о битовых операторах можно найти в нашей статье о них.
В завершение проясним один важный момент и разграничим похожие по способу действия языковые инструменты.
Разворачивайте Python-проекты
в облаке Timeweb Cloud
477 ₽/мес
657 ₽/мес
Чем отличаются операторы от функций
Вы наверняка заметили, что в этот обзор не попала ни одна функция. Путаница в определении этих инструментов возникает из-за того, что и те, и другие производят похожие действия, то есть так или иначе преобразуют объекты. Однако функции более глобальны, то есть могут выполнять операции со строками и целыми блоками кода, а операторы — только с отдельными значениями и переменными. Поэтому функция может состоять в Python из блока операторов, а вот операторы из функций — никогда.
