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

A5
B-1
CNone
DИсключение StopIteration.
Правильный ответ. next(it, default) возвращает default вместо StopIteration, если iterator исчерпан.

Разбор

После первого next(it) единственный элемент 5 уже прочитан. Второй вызов next(it, -1) не может получить новое значение, но вместо исключения вернёт значение по умолчанию — -1. Это удобно, когда хотите безопасно попытаться взять элемент без обработки StopIteration.

Проверь себя · 1/3разбор после ответа
Вы фильтруете большой поток строк rows. Почему генератор def valid(rows): for row in rows: if is_valid(row): yield row часто лучше по памяти, чем [row for row in rows if is_valid(row)]?
Тренировать Python в Telegram

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