← Все вопросы
Чем None отличается от 0 и от пустой строки?
16
None, 0 и '' — вроде все означают «ничего/пусто». В чём тогда разница между ними?
3 ответа
21
Они разные по смыслу и по типу, хотя в if все считаются «ложью».
None— «значения нет вообще» (тип NoneType).0— это число, конкретное значение ноль (тип int).''— это строка, просто пустая (тип str).
print(None == 0) # False
print(0 == "") # False
print(type(None), type(0), type(""))
Разница важна на практике: например, возраст 0 — это валидный ответ «ноль лет», а None — «возраст не указали». Путать их нельзя.
Дмитрий Бутырев пример с возрастом прям в точку, теперь понятно зачем None отдельно · 20 месяцев назад
9
Разные типы: None — отсутствие значения, 0 — число, '' — строка. В if все «ложь», но это не делает их равными.
0
0 — цена есть, она нулевая.
None — цены нет, мы не можем ее использовать.
'' — это название товара, просто пустое.
Вывод: 0 — это число, '' — это текст, а None — это полное отсутствие чего-либо. Сравнивать их через == можно (получите False), но по смыслу это абсолютно разные вещи. Для проверки на None всегда используй is, а не ==
Ваш ответ
Войдите, чтобы ответить на вопрос.