== сравнивает значения (вызывает __eq__), is сравнивает identity — один ли это объект в памяти (сравнивает id()). a is b означает id(a) == id(b). Для None всегда используй is None, не == None. Python кэширует маленькие целые числа (-5 до 256) и короткие строки, поэтому a = 5; b = 5; a is b — True, но для больших чисел — не гарантировано. Правило простое: is для None и синглтонов, == для всего остального.
В чём разница между is и ==?
Junior
399 просмотровAFK Offer AI
Что такое type hints и зачем они нужны?