ENIGMA AI
ENIGMA AI
Python Легкий

В чём отличие между операторами 'is' и '=='?

Операторы is и == в Python

== (Equality)

Сравнивает значения объектов.

a = [1, 2, 3]
b = [1, 2, 3]
print(a == b)  # True — значения равны

is (Identity)

Сравнивает идентичность объектов (один ли это объект в памяти).

a = [1, 2, 3]
b = [1, 2, 3]
print(a is b)  # False — разные объекты

c = a
print(a is c)  # True — один объект

Под капотом:

# is эквивалентно:
id(a) == id(b)

Особые случаи:

1. Интернирование строк:

a = "hello"
b = "hello"
print(a is b)  # True (интернирование)

a = "hello world!"
b = "hello world!"
print(a is b)  # False (не интернируется)

2. Кэширование малых целых (-5 до 256):

a = 100
b = 100
print(a is b)  # True

a = 1000
b = 1000
print(a is b)  # False

Правила использования:

Ситуация Оператор
Сравнение значений ==
Проверка на None is None
Проверка на True/False is True
Сравнение типов is (синглтоны)
# Правильно
if x is None:
    pass

# Неправильно
if x == None:
    pass

Похожие вопросы

Готовитесь к собеседованию?

ENIGMA AI — невидимый ИИ-помощник для технических интервью

Попробовать бесплатно
Все вопросы