Есть it = iter([5]). Выполнили next(it), а затем next(it, -1). Что вернёт второй вызов next(it, -1)?

AЦелое число 5 повторно
BЗначение по умолчанию -1
CПустое значение None
DИсключение StopIteration
Правильный ответ. Если у next() указан второй аргумент, он возвращается вместо StopIteration при исчерпанном итераторе.

Разбор

Первый next(it) забрал единственный элемент 5 и продвинул итератор за конец. Когда у next указан второй аргумент-«дефолт», на исчерпанном итераторе вместо исключения возвращается это значение. Поэтому второй next(it, -1) отдаёт -1. Без второго аргумента вызов поднял бы StopIteration, но в задаче он явно передан. None появляется только если его передать вторым аргументом самому, а первый элемент списка повторно не возвращается.

Проверь себя · 1/3разбор после ответа
Есть it = iter([5]). Выполнили next(it), а затем next(it, -1). Что вернёт второй вызов next(it, -1)?
Тренировать Python в Telegram

Ещё вопросы по теме «Итераторы и генераторы»