← Все вопросы
В чём разница между == и is?
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 месяцев назад
Ваш ответ
Войдите, чтобы ответить на вопрос.