← Все вопросы

TypeError: 'NoneType' object is not iterable — почему функция отдала None?

Задан 21 месяц назад985 просмотров1 ответ
5

Распаковываю результат функции в две переменные, а получаю TypeError: cannot unpack non-iterable NoneType object:

def minmax(a):
    if a:
        return min(a), max(a)

lo, hi = minmax([])

Что значит NoneType при распаковке?

1 ответ

10
✓ Принятый ответ — помог автору

В функции return стоит внутри if a:. Если список пустой, условие ложно, return не выполняется, и функция тихо возвращает None. Дальше ты пытаешься распаковать None в lo, hi — а None распаковать нельзя, отсюда ошибка про NoneType.

Добавь ветку для пустого случая, чтобы функция всегда возвращала пару:

def minmax(a):
    if a:
        return min(a), max(a)
    return None, None   # или подними ошибку / верни (0, 0)

Общее правило: следи, чтобы функция возвращала значение во всех ветках, а не только в части.

Ваш ответ

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