Таблица операций Python: как выполнять вычисления и сравнения

Раздел: Основы Python -> Операторы Python

Основные операторы Python

Наиболее эффективное решение: сводная таблица всех операторов

КатегорияОператорОписаниеПримерРезультат
Арифметические+, -, *, /, //, %, **Сложение, вычитание, умножение, деление, целочисленное деление, остаток, возведение в степень
10 // 3

таблица операций python (таблица операций в python)

3
Сравнения==, !=, <, >, <=, >=Равно, не равно, меньше, больше, меньше или равно, больше или равно
5 > 3
True
Логическиеand, or, notИ, ИЛИ, НЕ
True and False
False
Присваивания=, +=, -=, *=, /=, //=, %=, **=, &=, |=, ^=, <<=, >>=Простое и составные присваивания
x = 5
x += 2
x = 7
Побитовые&, |, ^, ~, <<, >>И, ИЛИ, исключающее ИЛИ, инверсия, сдвиг влево, сдвиг вправо
5 & 3
1
Membershipin, not inПроверка принадлежности
'a' in 'abc'
True
Identityis, is notПроверка идентичности объектов
a = [1, 2]; b = a; a is b
True
Тернарныйx if cond else yУсловное выражение
'да' if 5>3 else 'нет'
'да'
Walrus:=Присваивание внутри выражения
(n := 10) > 5
True

Как использовать операторы в виде функций?

Модуль operator предоставляет функции, соответствующие операторам: operator.add, operator.eq и т.д. Это удобно для передачи в качестве аргументов.

import operator
print(operator.add(10, 5))   # 15
print(operator.eq(3, 4))     # False

Типичная ошибка:

Забыть импортировать модуль. Имена функций нужно писать точно (напр. operator.and_ для битового И, так как and зарезервировано).

Как определить собственное поведение операторов для пользовательских объектов?

Переопределите магические методы: __add__, __eq__, __lt__ и т.д.

class Vector:
    def __init__(self, x, y):
        self.x = x
        self.y = y
    def __add__(self, other):
        return Vector(self.x + other.x, self.y + other.y)
    def __repr__(self):
        return f'Vector({self.x}, {self.y})'
v1 = Vector(1, 2)
v2 = Vector(3, 4)
print(v1 + v2)  # Vector(4, 6)

Типичная ошибка:

Не возвращать новый объект, а изменять существующий. Для иммутабельности всегда возвращайте новый экземпляр.

Какие дополнительные операторы есть в Python?

Тернарный оператор и оператор walrus.

  • Тернарный: результат = 'положительное' if num > 0 else 'отрицательное'
  • Walrus: позволяет присвоить значение переменной внутри выражения, например while (line := file.readline()):

Типичная ошибка:

Путать приоритеты: в тернарном операторе условие вычисляется первым. В walrus обязательно скобки, если нужно использовать результат.

Как писать множественные сравнения компактно?

Python поддерживает цепочки сравнений: a < b < c эквивалентно a < b and b < c.

x = 5
print(1 < x < 10)  # True

Типичная ошибка:

Использование цепочек с разными операторами может привести к неожиданному поведению, например a == b == c проверяет идентичность, а не равенство всех трех.

Как проверить принадлежность и идентичность?

Операторы in и is часто путают. in проверяет наличие элемента, is проверяет, один ли это объект.

a = [1, 2, 3]
b = [1, 2, 3]
print(a is b)        # False (разные объекты)
print(a == b)        # True (содержимое одинаково)
print(2 in a)        # True

Типичная ошибка:

Использование is вместо == для сравнения чисел или строк. Python кэширует малые объекты, но полагаться на это не стоит.

Расширенные примеры операторов Python

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

Приоритет определяет порядок выполнения. Например, арифметические операции имеют высший приоритет над сравнениями.

Пример
result = 2 + 3 * 4   # 14, так как умножение выполняется первым
print(result)
14

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

Побитовые операторы работают с целыми числами на уровне битов.

Пример
a = 0b1100   # 12
b = 0b1010   # 10
print(f"a & b = {a & b}  # битовое И: 8 (0b1000)")
print(f"a | b = {a | b}  # битовое ИЛИ: 14 (0b1110)")
print(f"a ^ b = {a ^ b}  # исключающее ИЛИ: 6 (0b0110)")
print(f"~a = {~a}  # инверсия: -13 (дополнение до двух)")
print(f"a << 1 = {a << 1}  # сдвиг влево: 24 (0b11000)")
print(f"a >> 2 = {a >> 2}  # сдвиг вправо: 3 (0b0011)")
a & b = 8  # битовое И: 8 (0b1000)
a | b = 14  # битовое ИЛИ: 14 (0b1110)
a ^ b = 6  # исключающее ИЛИ: 6 (0b0110)
~a = -13  # инверсия: -13 (дополнение до двух)
a << 1 = 24  # сдвиг влево: 24 (0b11000)
a >> 2 = 3  # сдвиг вправо: 3 (0b0011)

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

Логические операторы and и or вычисляются по короткой схеме: если левый операнд определяет результат, правый не вычисляется.

Пример
def risky():
    print("Вызвана risky")
    return True
result = False and risky()   # risky не вызывается, результат False
print(result)
result = True or risky()     # risky не вызывается, результат True
print(result)
False
True

Оператор @ для матричного умножения

В Python 3.5+ появился оператор @ для матричного умножения (обычно используется с библиотекой NumPy).

Пример
import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print(A @ B)
[[19 22]
 [43 50]]

Цепочки сравнений с разными операторами

Пример
x = 10
print(5 < x == 10)   # True, эквивалентно (5 < x) and (x == 10)
print(5 < x != 10)  # False, так как x == 10, поэтому x != 10 ложно
True
False

Использование оператора walrus в списковых включениях

Пример
data = [1, 4, 9, 16]
# Квадратные корни только тех чисел, которые больше 3
result = [y for x in data if (y := x**0.5) > 3]
print(result)
[4.0]

Таблица операций в Python - comments

En
таблица операций python (python)