Операторы и выражения в Python
Операторы и выражения в Python

Операторы и выражения в Python

Большинство строк программного кода представляют собой выражения. Например 1 + 2 – это выражение. Выражение состоит из 2 частей:

  • Оператор (+) – функционал, представленный в виде символов (например + ==) или зарезервированных слов (например and not).
  • Операнды (1 и 2) – это данные, над которыми производится действия.
Выражение в Python состоит из оператора и операндов
Выражение в Python состоит из оператора и операндов
Выражение в Python состоит из оператора и операндов

После того как Python интерпретатор вычислит выражение, мы можем, как в примере выше, присвоить результат переменной sum . Или, например, сразу вывести результат на экран:

>>> print(1 + 2) 3

Операторы сравнения

Рассмотрим простой пример – 1 + 2 == 3

Для проверки истинности данного условия, используется логический тип. Когда мы выполним данное выражение, в результате нам вернется True (истина) или False (ложь).

>>> 1 + 2 == 3 True

В данном примере мы используем один из операторов сравнения – "==" (равно). Всего в Python таких операторов 6:

  • == – равно;
  • != – не равно;
  • > – больше;
  • < – меньше;
  • >= – больше или равно;
  • <= – меньше или равно.
>>> 1 == 2 False >>> 1 != 2 True >>> 1 > 2 False >>> 1 < 2 True >>> 1 >= 2 False >>> 1 <= 2 True

Логические операторы

Правила выполнения логических операций соответствуют таблицам истинности. В Python 3 логических оператора:

  • or – логическое "ИЛИ";
  • and – логическое "И";
  • not – логическое отрицание.
>>> (1 + 1 == 2) or (2 * 2 == 5) True >>> (1 + 1 == 2) and (2 * 2 == 5) False >>> (1 + 1 == 2) and not (2 * 2 == 5) True

Арифметические операторы

Арифметические операторы в Python производят арифметические операции над числами (сложение, вычитание, деление и т.д.)

  • + - сложение;
  • - – вычитание;
  • * – умножение;
  • / – деление;
  • // – целочисленное деление (возвращает только целую часть от деления, значение после запятой отбрасывается);
  • % – деление по модулю (возвращает остаток от деления);
  • ** – возведение в степень.
>>> 1 + 2 3 >>> 1 - 2 -1 >>> 1 * 2 2 >>> 1 / 2 0.5 >>> 10 // 3 3 >>> 10 % 3 1 >>> 3 ** 2 9

Операторы присваивания

Операторы присваивания в Python работаю вполне очевидно – значение находящееся справа присваивается переменной, находящейся слева. Существует несколько разновидностей операторов присваивания:

  • = – значение правого операнда присвоится левому операнду;
  • += – сумма левого и правого операнда присвоится левому операнду;
  • -= – разность левого и правого операнда присвоится левому операнду;
  • *= – произведение левого и правого операнда присвоится левому операнду;
  • /= – разделит левый операнд на правый и результат присвоится левому операнду;
  • //= – результат целочисленного деления левого операнда на правый операнд присвоится левому операнду;
  • %= – разделит левый операнд на правый по модулю и результат присвоится левому операнду;
  • **= – возведет левый операнд в степень правого и результат присвоится левому операнду.
>>> a = 10 >>> print(a) 10 >>> a = 10 >>> a += 1 # аналогично a = a + 1 >>> print(a) 11 >>> a = 10 >>> a -= 2 # аналогично a = a - 2 >>> print(a) 8 >>> a = 10 >>> a *= 2 # аналогично a = a * 2 >>> print(a) 20 >>> a = 10 >>> a /= 2 # аналогично a = a / 2 >>> print(a) 5.0 >>> a = 10 >>> a //= 3 # аналогично a = a // 2 >>> print(a) 3 >>> a = 10 >>> a %= 3 # аналогично a = a % 2 >>> print(a) 1 >>> a = 10 >>> a **= 2 # аналогично a = a ** 2 >>> print(a) 100

Python поддерживает не только обычное присваивание правого операнда левому, но и множественное присваивание.

Множественное присваивание в Python
Множественное присваивание в Python
Множественное присваивание в Python
>>> a, b, c = 1, "python", [1,2,3] >>> print(a, b, c) 1 python [1, 2, 3]

С помощью такого присваивания можно поменять значения переменных между собой:

>>> a = 1 >>> b = 2 >>> a, b = b, a >>> print(a, b) 2 1

Также с помощью множественного присваивания можно "распаковывать" строки (str), списки (list), кортежи (tuple) и словари (dict).

Распаковка особенно удобна, когда функция возвращает несколько значений в виде кортежа (tuple):

>>> def test_page(): return 404, "Not found" >>> code, message = test_page() >>> print(code, message) 404 Not foundГлавное условие распаковки – количество элементов должно совпадать

Если необходимо распаковать лишь несколько элементов, воспользуйтесь переменной со знаком "*":

>>> text = "deactivate" >>> first, second, *other_letters = text >>> print(first, second, other_letters) d e ['a', 'c', 't', 'i', 'v', 'a', 't', 'e']

Побитовые операторы

Данные операторы предназначены для работы с данными в битовом (двоичном) формате. Про битовые операции смотрите статью на википедии.

  • ~ – побитовое отрицание (для него требуется только один операнд);
  • & – побитовое "И";
  • | – побитовое "ИЛИ";
  • ^ – исключающее "ИЛИ";
  • << – побитовый сдвиг влево;
  • >> – побитовый сдвиг вправо.
Пример побитовых операций в Python
Пример побитовых операций в Python
Пример побитовых операций в Python
>>> a = 11 >>> b = 34 >>> a & b 2 >>> a | b 43 >>> (a ^ b) 41 >>> ~a -12 >>> a << 1 22 >>> a >> 2 5

Операторы членства

В Python существует всего 2 оператора принадлежности – in и not in и предназначены они для проверки наличия элемента в строке (str), списке (list), словаре (dict) или кортеже (tuple).

  • in – возвращает True если элемент присутствует в последовательности;
  • not in – возвращает True если элемент отсутствует в последовательности.
>>> "host" in "host=local" True >>> 2 in [1,2,4,5] True >>> "one" in {"one": 1, "two": 1} # в словаре проверка по ключам True >>> True in ("string", 2, True) True >>> "str" not in ("string", 2, True) True

Операторы тождественности

Данные операторы сравнивают размещение двух объектов в памяти.

  • is – возвращает True если оба операнда указывают на один и тот же объект;
  • is not – возвращает True если оба операнда указывают на разные объекты.
>>> x = 5 >>> type(x) is int True >>> x = 5.1 >>> type(x) is int False >>> x = [1, 2, 3] # id(x) = 64620552 >>> y = [1, 2, 3] # id(y) = 60529960 >>> x is y False

Приоритет операторов

Таблица приоритетов операторов в Python показана ниже.

Таблица приоритетов выполнения операторов в Python
Таблица приоритетов выполнения операторов в Python
Таблица приоритетов выполнения операторов в Python

Элементы отсортированы по убыванию, с высокого приоритета к более низкому. В комбинациях с несколькими операторами, оператор с большим приоритетом выполняется первым.

Например в выражении 1 + 2 ** 2 * 10 сначала выполнится возведение в степень, далее умножение, потом сложение. Итого результат: 41

😭
😕
😃
😍