Русский
Открыть в Telegram

Пост Перестаньте использовать if obj == None, используйте if obj is None

26 февраля 2026
P
Python Portal
Фотография
Перестаньте использовать if obj == None, используйте if obj is None В Python, когда вы пишете: obj == None вы не проверяете напрямую, является ли obj значением None. Вместо этого вы спрашиваете, равен ли объект None. Да, во многих случаях результат будет таким же, как у кода: obj is None Но поведение у этих двух вариантов разное, и эта разница важна. Когда вы используете: obj == None Python вызывает метод __eq__ у объекта. То есть сам объект решает, что значит "равен None". А этот метод можно переопределить. Если obj это экземпляр класса, в котором __eq__ реализован так, что при сравнении с None возвращается True (даже если объект на самом деле не None), тогда obj == None может ошибочно дать True. Пример: class Weird: def __eq__(self, other): return True # Всегда утверждает, что равен obj = Weird() print(obj == None) # True print(obj is None) # False Здесь видно, что obj == None возвращает True из-за кастомного поведения оператора __eq__ в классе. Из этого следует, что при использовании obj == None результат не всегда предсказуем. С другой стороны, когда вы пишете: obj is None вы используете оператор is, который нельзя переопределить. Это значит, что результат всегда будет одинаковым и предсказуемым. Оператор is проверяет идентичность объектов, то есть указывают ли две ссылки на один и тот же объект. Поскольку None это singleton (единственный экземпляр), obj is None это правильный и самый эффективный способ такой проверки. ❤️ Поэтому всегда рекомендуется, и это best practice, использовать obj is None вместо obj == None ради предсказуемости и эффективности. 👉 @PythonPortal
46 · 6.8K ·

Рядом в ленте

PPython PortalНемного базы Python. День 5. Сортировка списка по убыванию Метод sort() сортирует список по возрастанию (по умолчанию). Чтобы sort() работал, элементы списка доPPython PortalГлавное захотеть 🧠 👉 @PythonPortal
это сообщение
PPython PortalНемного базы Python. День 6 - Обмен значениями переменных В Python можно менять местами переменные после того, как им уже присвоены объекты. Ниже мы сначала приPPython PortalgiveHimABreak 👉 @PythonPortal
PPython PortalPython Portal@PythonPortal · канал · Технологии
51 046подписчиков4 165средний охват поста
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем