Есть 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 появляется только если его передать вторым аргументом самому, а первый элемент списка повторно не возвращается.

Можно заниматься бесплатно

Готовим вопросы…

Три вопроса по теме этой страницы, с объяснениями.

Продолжить в браузере

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