Зачем нужен тип данных None и в каких ситуациях вы его используете?
Чем None отличается от пустой строки "", пустого списка [] или числа 0? Приведите пример реального кода, где вы используете None.
2 ответа
Способ запомнить: 0 — это ответ, None — отсутствие ответа. Функция посчитала и получила ноль — возвращайте 0. Считать было нечего — None. Смешаете — потом не отличите «на счету ноль рублей» от «счёт не найден».
None — это «значения нет вообще», и от пустых значений он отличается по смыслу. Пустая строка — строка, просто нулевой длины. 0 — полноценное число. А None — знак, что результата не существует или его ещё не получили.
Живой пример — функция ищет пользователя:
def find_user(users, name):
for u in users:
if u['name'] == name:
return u
return None # не нашли — и это не то же самое, что «нашли пустого»
user = find_user(users, 'Оля')
if user is None:
print('нет такого')
Второй типовой случай — параметр по умолчанию, когда «не передали» надо отличать от «передали пустое»:
def report(data, title=None):
if title is None:
title = 'Отчёт за сегодня'
Сравнивают с None всегда через is None — устойчивая идиома.