Глава 9 · Выполняй мою команду!

is против ==

Два похожих оператора спрашивают о совершенно разных вещах — и есть ровно один правильный повод использовать is прямо сейчас.

Два разных вопроса

== и is выглядят похоже, но спрашивают о совершенно разном:

==
«Равны ли ЗНАЧЕНИЯ?»
is
«Это ОДИН И ТОТ ЖЕ объект?»

Главное практическое применение — None

В подавляющем большинстве случаев для чисел, строк и вообще обычных сравнений нужен именно ==. Правильное и по-настоящему важное применение is на этом этапе — проверка на None:

is_none.py
value = None

print(value is None)       # True — правильный способ
print(value is not None)   # False
Почему не value == None
Технически value == None в большинстве случаев тоже сработает — но is None считается более правильным стилем в Python: он однозначно спрашивает «это именно None?», а не «равно ли значение чему-то, что ведёт себя как None?». Договоримся всегда использовать is None / is not None.
Не используйте is для чисел и строк
256 is 256 или "a" is "a" могут вести себя неожиданно — их результат зависит от внутренних деталей реализации Python, которые не гарантированы и могут отличаться в разных ситуациях. Это не то, чему стоит учиться сейчас: для сравнения значений всегда используйте ==. Идея «сравнение по объекту» подробно вернётся в главе про ООП.
Практика: is против ==
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →