Что такое итераторы и генераторы в Python? В чём их плюсы?

Итератор выдаёт элементы через __next__ и завершает обход StopIteration. Генератор — удобный способ создать итератор функцией с yield, сохраняя состояние между выдачами.

Короткий ответ

Что ответить на собеседовании

Итератор выдаёт элементы через next и завершает обход StopIteration. Генератор — удобный способ создать итератор функцией с yield, сохраняя состояние между выдачами.

Подробный разбор

Ответ с пояснениями

Итератор выдаёт элементы через next и завершает обход StopIteration. Генератор — удобный способ создать итератор функцией с yield, сохраняя состояние между выдачами.

У итерируемого объекта iter() получает итератор; это не одно и то же понятие. Например, список можно обходить многократно новыми итераторами, а конкретный генератор обычно одноразовый. Ленивость позволяет обрабатывать большие потоки без списка всех результатов, но не гарантирует нулевое потребление памяти: локальные данные сохраняются. Генераторы удобны для конвейеров и ранней остановки; недостатки — отложенные ошибки, отсутствие произвольного доступа и необходимость аккуратно закрывать ресурсы.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее