Pythoner
Фотография
➡️В Python is проверяет, один ли это объект в памяти, а не равны ли значения:
a = 1000
b = 1000
print(a is b) # False
Даже если a == b, a is b может вернуть False, потому что это разные объекты. Python кэширует только небольшие числа и короткие строки.
➡️Частая ошибка:
if value is "test": # ❌
Правильно:
if value == "test": # ✅
➡️Когда is уместен?
Только для сравнения с singleton'ами, такими как:
if x is None:
...
🔫Неправильное использование is может вызвать странные баги, особенно в сравнениях. Будь точен — is не для значений.
🐍 Pythoner
13 · 1.5K ·