← Все вопросы

Зачем нужен тип данных None и в каких ситуациях вы его используете?

Задан 2 месяца назад40 просмотров2 ответа
0

Чем None отличается от пустой строки "", пустого списка [] или числа 0? Приведите пример реального кода, где вы используете None.

2 ответа

2

Способ запомнить: 0 — это ответ, None — отсутствие ответа. Функция посчитала и получила ноль — возвращайте 0. Считать было нечего — None. Смешаете — потом не отличите «на счету ноль рублей» от «счёт не найден».

1

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 — устойчивая идиома.

Ваш ответ

, чтобы ответить на вопрос.