← Все вопросы
TypeError: 'NoneType' object is not iterable — почему функция отдала None?
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)
Общее правило: следи, чтобы функция возвращала значение во всех ветках, а не только в части.
Ваш ответ
Войдите, чтобы ответить на вопрос.