Операторы

Оператор присваивания
Имеет несколько форм, рассмотрим подробно в инструкции присваивания. Рассмотрим на примере: x = 5

Слева пишется идентификатор переменной, справа присваиваемый объект. Порядок работы оператора:

  1. Создается объект в памяти, в него записывается значение 5, будет автоматически определен типа объекта как int;
  2. Создается переменная c идентификатором "x", если она не существует;
  3. В переменную a записывается ссылка на вновь созданный объект
Повторное присваивание: x = 10

Тогда порядок работы будет следующим:

  1. Если тип объекта является неизменяемым, то создается новый объект (иначе модифицируется старый) и ему присваивается новое значение.
  2. Если тип объекта является неизменяемым в переменную записывается ссылка на вновь созданный объект
a = 2
Логические операторы
Это группа операторов, которые возвращают булево значение для выражения.

Оператор идентичности (is) - двухместный оператор, сравнивает ссылки на объекты. Высокая скорость выполнения, обусловлено тем что сравниваются адреса в памяти, а не сами объекты. Не путать с оператором сравнения.

Оператор сравнения (>, >= <, <=, ==, !=) - двухместные оператор, сравнивает объекты на которые указывают ссылки.

Оператор членства (in) - двухместные оператор, для типов данных являющихся коллекциями, выполняет проверку присутствует элемент в коллекции или нет.

Логическое "И" (and) - двухместный оператор, сравнивает объекты на которые указывают ссылки, если оба значения "Истина", то выражение возвращает значение "Истина"

Логическое "ИЛИ" (or) - двухместный оператор, сравнивает объекты на которые указывают ссылки, если хотя бы одно значение "Истина", то выражение возвращает значение "Истина"

Логическое отрицание (not) - одноместный оператор, считывает значение объекта, на которые указывают ссылка, выражение возвращает инвертированное значение.

Операторы можно комбинировать, они будут выполняться согласно приоритету:
  1. >, >=, <, <=
  2. ==, !=
  3. is
  4. in
  5. not, or, and
a, b, c = False, 1, 2
print(a and b > c)
Арифметические операторы
Двухместные операторы (+, -, *, / %, //, **) - считывает значения объектов, на которые указывают ссылки и производит операцию.

Оператор деления ( / ) - возвращает значение с плавающей точкой. Для получения целого значения используется оператор целочисленного деления (//), для получения дробной части используется оператор деления по модулю (%)

Одноместный оператор отрицание (-)

Комбинированные операторы (+=, -=, /=, //-=, %=, *=, **=)

В Python существует разница между двухместным и аналогичным комбинированным оператором, например:
a = 2 
print('до:', a)
a = a ** 2
a**= 2
print('после:', a)
Комбинированная версия ищет значение в памяти только один раз и потому потенциально выполняется быстрее.
В случае с изменяемыми типами оператор дополняющего присваивания перегружен и существует:
b = [1, 2]
print('до:', b)
b = b + [3, 4]
b += [5, 6]
print('после:', b)