Как работают операторы in, not in, is, is not?

in и not in — операторы принадлежности: проверяют, входит ли элемент в последовательность или коллекцию (x in s, x not in s). is и is not — операторы тождественности: проверяют, ссылаются ли две переменные на один и тот же объект в памяти (x is y, x is not y).
Подробный ответ

Операторы in и not in — проверка принадлежности

Операторы in и not in используются, чтобы узнать, содержится ли значение внутри другой сущности: списка, кортежа, строки, множества, словаря и т.п.

x in s возвращает True, если x является элементом s (или ключом для словаря).

x not in s возвращает True, если x не содержится в s.

Примеры:

numbers = [1, 2, 3]
3 in numbers       # True
5 in numbers       # False
5 not in numbers   # True

text = "hello"
"h" in text        # True
"x" not in text    # True

data = {"id": 1, "name": "TeoBrain"}
"id" in data       # True  (проверяются ключи словаря)
"TeoBrain" in data # False

Важно: для словаря in проверяет именно ключи, а не значения. В реальном backend‑коде это постоянно используется при проверке наличия полей в данных запроса, конфиге или JSON‑объекте.

Операторы is и is not — проверка тождества

is и is not — это операторы тождественности (identity). Они отвечают на вопрос: «Эти две переменные указывают на один и тот же объект в памяти или нет?»

x is yTrue, если x и y ссылаются на один и тот же объект.

x is not yTrue, если это разные объекты.

Пример:

a = [1, 2, 3]
b = [1, 2, 3]
c = a

a == b   # True  (значения равны)
a is b   # False (разные объекты)
a is c   # True  (это один и тот же объект)
a is not b  # True

На практике is чаще всего используют для сравнения с None (рекомендация стиля):

value = None
if value is None:
    ...

Именно это ожидают услышать интервьюеры, когда спрашивают про разницу == и is.

Как не перепутать операторы на собеседовании

Краткое правило, которое уместно проговорить: для проверки принадлежности в коллекции — in/not in. Для проверки тождества (один и тот же объект) — is/is not. Для проверки равенства значений — ==, а не is. Типичная ошибка: использование is вместо == для чисел и строк — это может «случайно» сработать из‑за внутренних оптимизаций, но считается неправильной практикой.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге