← Все вопросы

В чём разница между == и is?

Задан 9 месяцев назад811 просмотров3 ответа
27

Наткнулся на странное:

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

x = 1000
y = 1000
print(x is y)  # False

Почему для 256 True, а для 1000 False? И когда вообще использовать is?

3 ответа

13
✓ Принятый ответ — помог автору

Коротко: == — равны ли значения, is — это вообще один и тот же объект. Для своих сравнений почти всегда нужен ==. is оставь для if x is None.

Vitaliy Ivanov автор: спасибо, по делу и без воды — то что надо · 9 месяцев назад
31

== сравнивает значения, isидентичность (один и тот же объект в памяти).

Маленькие целые (-5..256) Python кэширует, поэтому a is b для 256 — True. Для 1000 создаются разные объекты → is False, хотя == дал бы True.

Правило: для чисел и строк всегда ==. is — только для None.

Сэм Райдер про кэш -5..256 не знал, спасибо за подробность · 9 месяцев назад
2

используй is когда сравниваешь числа, это быстрее

Евгений Ссссссссссссссссс наоборот, для чисел is ловит баги, так нельзя · 9 месяцев назад

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект