Итератор выдаёт значения через next() и завершает обход исключением StopIteration. Генератор — удобный способ создать итератор с помощью функции с yield или генераторного выражения.
Что такое итераторы и генераторы в Python и чем они отличаются?
Итератор выдаёт значения через next() и завершает обход исключением StopIteration. Генератор — удобный способ создать итератор с помощью функции с yield или генераторного выражения.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Итератор выдаёт значения через next() и завершает обход исключением StopIteration. Генератор — удобный способ создать итератор с помощью функции с yield или генераторного выражения.
У итератора есть iter(), обычно возвращающий self, и next(). Генератор сохраняет локальное состояние между остановками на yield, поэтому сложный обход не приходится оформлять отдельным классом. Не каждый iterable является итератором: список создаёт новый итератор при iter(list). И генераторы, и обычные итераторы обычно одноразовые; после исчерпания их нужно создавать заново, если требуется повторный проход.