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 — невидимый ИИ-помощник для технических интервью
Попробовать бесплатно