Итератор выдаёт элементы через next и завершается StopIteration; iterable создаёт итератор через iter. Генератор — удобная реализация итератора с сохранением состояния через yield.
Расскажите про генераторы и итераторы.
Итератор выдаёт элементы через __next__ и завершается StopIteration; iterable создаёт итератор через __iter__. Генератор — удобная реализация итератора с сохранением состояния через yield.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Итератор выдаёт элементы через next и завершается StopIteration; iterable создаёт итератор через iter. Генератор — удобная реализация итератора с сохранением состояния через yield.
Список — повторно обходимый iterable, а объект генератора обычно одноразовый. Генераторная функция возвращает объект без выполнения всего тела сразу; выполнение продолжается при запросе следующего элемента. Ленивость экономит память, но переносит момент ошибок и требует аккуратного закрытия ресурсов при раннем выходе.