Оператор в Python это знак или слово, которое выполняет действие над значениями: + складывает, // делит нацело, % даёт остаток, ** возводит в степень, == сравнивает, а одиночный = записывает значение в переменную. Слова and, or, not, in и is тоже операторы, просто записаны буквами.
Ниже таблица всех знаков с примерами, разбор каждой группы и ошибки, на которых спотыкаются новички. Весь код проверен в Python 3.14, вывод в блоках настоящий. Собрали и курсы по Python для тех, кто хочет разобрать язык целиком. Если вы только знакомитесь с языком, начните с обзора «Язык Python: стоит ли учить», а запустить примеры у себя поможет инструкция «Как создать и запустить файл Python в VS Code».
Что значит каждый знак в Python: таблица операторов

Сохраните таблицу как шпаргалку. В последнем столбце то, что напечатает print().
| Оператор | Что значит | Пример | Результат |
|---|---|---|---|
+ |
сложение, склейка строк и списков | 2 + 3 |
5 |
- |
вычитание, смена знака | 10 - 4 |
6 |
* |
умножение, повтор строки | "ab" * 3 |
ababab |
/ |
обычное деление, всегда даёт дробное число | 6 / 3 |
2.0 |
// |
деление нацело с округлением вниз | 7 // 2 |
3 |
% |
остаток от деления | 7 % 2 |
1 |
** |
возведение в степень | 2 ** 10 |
1024 |
= |
присваивание | x = 5 |
x хранит 5 |
+=, -=, *= и т. д. |
изменить переменную на месте | x += 1 |
x стал 6 |
== |
равно | 5 == 5.0 |
True |
!= |
не равно | 5 != 5 |
False |
>, < |
больше, меньше | 3 > 2 |
True |
>=, <= |
больше или равно, меньше или равно | 2 <= 2 |
True |
and |
логическое И | 3 and 4 |
4 |
or |
логическое ИЛИ | 0 or "нет" |
нет |
not |
логическое НЕ | not 0 |
True |
in, not in |
есть ли элемент в коллекции | "py" in "python" |
True |
is, is not |
один ли это объект в памяти | x is None |
True или False |
&, |, ^ |
побитовые И, ИЛИ, исключающее ИЛИ | 5 & 3 |
1 |
~ |
побитовое НЕ | ~5 |
-6 |
<<, >> |
сдвиг битов влево и вправо | 1 << 4 |
16 |
:= |
«морж», присваивание внутри выражения | (n := 3) > 2 |
True |
@ |
умножение матриц (NumPy) | a @ b |
матрица |
Полный официальный список с приоритетами есть в справочнике языка Python. Дальше разберём, где у каждой группы подвох.
Арифметические операторы: деление, остаток и степень
Сложение, вычитание и умножение ведут себя как на калькуляторе. Сюрпризы начинаются на делении.
print(7 / 2, 7 // 2, 7 % 2, 2 ** 10)
print(6 / 3, type(6 / 3).__name__)
print(divmod(17, 5))
3.5 3 1 1024
2.0 float
(3, 2)
Одиночный слеш / всегда возвращает дробное число типа float, даже когда делится без остатка. Нужно целое, берите //. Функция divmod() отдаёт частное и остаток сразу парой.
Что значит // и % с отрицательными числами
Двойной слеш округляет вниз, а не отбрасывает дробную часть. На положительных числах разницы не видно, на отрицательных она есть:
print(-7 // 2, -7 % 2, 7 // -2, 7 % -2)
-4 1 -4 -1
Минус три с половиной округляется вниз до минус четырёх. Остаток % в Python всегда того же знака, что делитель, поэтому -7 % 2 даёт 1, а не -1. Так написано в описании числовых типов: результат // это частное, округлённое к минус бесконечности.
Степень ** и минус перед числом
Две вещи, которые ломают формулы:
print(-2 ** 2, (-2) ** 2)
print(2 ** 3 ** 2)
print(2 ** -1)
-4 4
512
0.5
-2 ** 2равно -4: степень считается раньше минуса. Нужен квадрат отрицательного числа, ставьте скобки.2 ** 3 ** 2считается справа налево: сначала 3 в квадрате, потом 2 в девятой.- Отрицательная степень даёт дробь.
Плюс и звёздочка для строк и списков
Плюс и звёздочка в питоне работают не только с числами:
print("ab" * 3, "py" + "thon", [0] * 3)
ababab python [0, 0, 0]
Склейка строк понадобится уже в первых проектах, например чтобы собрать текст запроса к нейросети, как в примерах GigaChat API на Python.
А вот строку с числом сложить нельзя, об этом в разделе ошибок.
Канал основателя Checkroi Вани Буявца3 700 человек читают мой Телеграм-канал про нейросетиСобрал промпты для Claude Code и ChatGPT, разборы ИИ-инструментов и лайфхаки по продвижению бизнеса в одном местеПрисоединитьсяОператоры сравнения и присваивания
Главное правило: один знак = записывает, два знака == сравнивают. Перепутаете в условии, Python сам подскажет:
x = 5
if x = 5:
print(x)
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?
Сравнения возвращают True или False. Их можно писать цепочкой, как в математике:
x = 5
print(1 < x < 10, x == 5.0, x != 5)
print("apple" < "banana", "Z" < "a")
True True False
True True
Запись 1 < x < 10 равна 1 < x and x < 10, но x вычисляется один раз. Строки сравниваются по кодам символов, поэтому заглавная "Z" оказывается «меньше» строчной "a". Сравнения чаще всего живут в условиях циклов, подробнее в статье «Цикл while в Python».
Составное присваивание и оператор «морж»
Запись n += 5 короче, чем n = n + 5. Так же работают -=, *=, /=, //=, %= и **=:
n = 10
n += 5 # 15
n *= 2 # 30
n //= 3 # 10
print(n)
10
Оператор := появился в Python 3.8 и за форму получил прозвище «морж». Он присваивает значение прямо внутри выражения, чтобы не считать одно и то же дважды:
data = [3, 8, 1]
if (n := len(data)) > 2:
print(f"элементов: {n}")
элементов: 3
Логические операторы and, or, not
В Python логика пишется словами, а не значками && и ||, как в C или JavaScript. Это одна из причин, почему Python советуют первым языком для новичков. Порядок такой: сначала not, потом and, последним or.
Неочевидная деталь: and и or возвращают не True или False, а один из операндов. Об этом прямо сказано в разделе о логических операциях:
print(0 or "по умолчанию", 3 and 4, None or [] or 0)
print(not 0, not "текст", not 1 == 2)
по умолчанию 4 0
True False True
orотдаёт первое «истинное» значение или последнее, если истинных нет. Отсюда приёмname = user_input or "Гость".andотдаёт первое «ложное» значение или последнее, если все истинны.- Ложными считаются
0, пустая строка, пустой список,NoneиFalse.
Второй операнд вычисляется, только если без него ответ неясен. В x != 0 and 10 / x > 1 деления на ноль не будет. Короткую запись «если, то, иначе» в одну строку разбирает статья «Тернарный оператор в Python».
Операторы in и is: принадлежность и тождество
in проверяет, есть ли элемент внутри коллекции:
print(3 in [1, 2, 3], "py" in "python", "k" in {"k": 1}, 1 in {"k": 1})
True True True False
У словаря in ищет среди ключей, а не значений, поэтому последняя проверка дала False.
is отвечает на другой вопрос: это один и тот же объект или два одинаковых?
a = [1, 2]
b = [1, 2]
c = a
print(a == b, a is b, a is c)
True False True
Списки a и b равны по содержимому, но это разные объекты. c это второе имя того же списка. Для сравнения значений нужен ==, а is оставьте для None: if result is None.
Побитовые операторы и операции с множествами
Знаки &, |, ^, ~, << и >> работают с двоичной записью целых чисел. В прикладном коде они встречаются редко: флаги, маски, сетевые протоколы. Постоянно с битами работает программист микроконтроллеров, хотя пишет он чаще на C.
print(bin(5), bin(3), bin(5 & 3))
print(5 & 3, 5 | 3, 5 ^ 3, ~5, 1 << 4, 256 >> 2)
0b101 0b11 0b1
1 7 6 -6 16 64
Сдвиг влево на 4 бита равен умножению на 16, сдвиг вправо на 2 бита делит нацело на 4.
Гораздо чаще те же знаки попадаются в работе с множествами и словарями:
s = {1, 2, 3}
t = {2, 3, 4}
print(s & t, s | t, s - t, s ^ t)
print({"a": 1} | {"b": 2})
{2, 3} {1, 2, 3, 4} {1} {1, 4}
{'a': 1, 'b': 2}| Знак | С числами | С множествами |
|---|---|---|
& |
побитовое И | пересечение |
| |
побитовое ИЛИ | объединение; у словарей слияние с Python 3.9 |
^ |
исключающее ИЛИ | элементы, которые есть только в одном из множеств |
- |
вычитание | разность множеств |
Приоритет операторов в Python

Если в выражении несколько операторов, Python выполняет их в строгом порядке, от высшего приоритета к низшему:
- Скобки
(). - Степень
**. - Унарные
+x,-x,~x. *,@,/,//,%.+и-.- Сдвиги
<<,>>, затем&,^,|. - Сравнения,
in,is. not, потомand, потомor.- Тернарный
if…else,lambdaи в самом конце:=.
print(2 + 3 * 4, (2 + 3) * 4, 10 / 3 * 3)
14 20 10.0
Операторы одного уровня считаются слева направо, кроме **. Совет из практики: если сами сомневаетесь в порядке, поставьте скобки. Коллега, который будет читать код, тоже сомневается, а лишние скобки ничего не стоят. Это частный случай принципа KISS: простой код лучше хитрого.
Частые ошибки с операторами

Условие «равно одному из вариантов» всегда истинно
answer = "нет"
if answer == "да" or "ок":
print("сработало")
сработало
Python читает это как (answer == "да") or "ок", а непустая строка "ок" всегда истинна.
Решение: if answer in ("да", "ок"):
Сложение строки с числом
print("5" + 5)
TypeError: can only concatenate str (not "int") to str
Python не превращает типы сам, в отличие от JavaScript. Решение: int("5") + 5 даёт 10, а "5" * 3 даёт строку 555. Почему языки ведут себя по-разному, объясняет статья про типизацию в программировании.
Почему 0,1 + 0,2 не равно 0,3 в питоне
print(0.1 + 0.2, 0.1 + 0.2 == 0.3)
0.30000000000000004 False
Дробные числа хранятся в двоичном виде с крошечной погрешностью, это разобрано в учебнике Python. Решение: сравнивать через math.isclose(0.1 + 0.2, 0.3), для денег брать модуль decimal. Та же погрешность вылезает при сумме длинного списка цен, приёмы есть в инструкции «Как суммировать список в Python».
is вместо == для чисел и строк
Проверка x is 1000 иногда даёт True, иногда False, и зависит это от того, как интерпретатор разместил объекты. Python 3.14 на такую строку выводит предупреждение SyntaxWarning: "is" with 'int' literal. Did you mean "=="?. Решение: значения сравнивать только через ==.
x++ из других языков
Инкремента ++ в Python нет, x++ даёт SyntaxError. Коварнее запись ++x: ошибки нет, это два унарных плюса, и x не меняется. Решение: x += 1.
+= меняет список у всех, кто на него ссылается
lst = [1]
alias = lst
lst += [2]
print(alias)
[1, 2]
У списка += дописывает элементы в тот же объект, поэтому изменился и alias. С кортежем то же действие создаёт новый объект, и старое имя остаётся с прежним значением. Это поведение описано в разделе о составном присваивании.
Где освоить Python системно
Операторы открывают почти любой учебник по Python. Дальше идут функции, классы, работа с файлами и библиотеками, и здесь удобнее учиться по программе, где задачи проверяет преподаватель, а не только интерпретатор.
Если думаете о работе с Python, посмотрите, как стать Python-разработчиком с нуля. Ниже подборка курсов, полный список собран в каталоге курсов по Python.
| Курс | Школа | Стоимость со скидкой | В рассрочку | Длительность | Обзор курса от Checkroi |
|---|---|---|---|---|---|
| Профессия «Python-разработчик» Перейти на сайт курса | 157 335 ₽ | 5987 ₽/мес. | 10 месяцев | Обзор курса | |
| Fullstack-разработчик на Python Перейти на сайт курса | 161 200 ₽ | 7125 ₽/мес. | 21 месяц | Обзор курса | |
| ДО Профессия Python-разработчик Перейти на сайт курса | 149 001 ₽ | 3167 ₽/мес. | 10 месяцев | Обзор курса | |
| Автоматизированное тестирование на Python Перейти на сайт курса | 118 666 ₽ | 4108 ₽/мес. | 9 месяцев | Обзор курса | |
| Программирование на Python ПРО Перейти на сайт курса | 119 600 ₽ | - | 17 месяцев | Обзор курса |
Больше программ — в полном каталоге курсов по Python




