MiddleКодЧастоЕщё не отвечали
Что выведет эта проверка is против == для целых?
Предскажите обе строки для этих сравнений целых.
a = 256; b = 256
c = 257; d = 257
print(a is b, c is d)
print(a == b, c == d)
Определите вывод и объясните.
True False, затем True True. CPython кэширует малые целые от −5 до 256, поэтому a и b — один объект (is → True); 257 вне этого диапазона, поэтому c и d — разные объекты (is → False). == сравнивает значение и всегда True. Используйте is лишь для тождества (например, x is None).
- ✗Использовать
isдля сравнения значений целых вместо== - ✗Считать, что равные целые всегда один и тот же объект
- ✗Думать, что
==делегирует кis
- →Почему CPython кэширует целые от −5 до 256?
- →Когда
is— правильный выбор вместо==?