Генератор — итератор, который выдаёт значения по мере запроса и сохраняет состояние между выдачами. Вызов функции с yield создаёт объект-генератор; это и есть ответ на вторую часть вопроса.
Что такое генераторы в Python? Как называется итератор, который под капотом использует yield?
Генератор — итератор, который выдаёт значения по мере запроса и сохраняет состояние между выдачами. Вызов функции с yield создаёт объект-генератор; это и есть ответ на вторую часть вопроса.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Генератор — итератор, который выдаёт значения по мере запроса и сохраняет состояние между выдачами. Вызов функции с yield создаёт объект-генератор; это и есть ответ на вторую часть вопроса.
Тело генераторной функции начинает выполняться при получении очередного элемента, а yield приостанавливает его до следующего запроса. После завершения дальнейшая итерация заканчивается StopIteration. Генератор не хранит автоматически весь результат и обычно проходится один раз. Любой генератор является итератором, но итератор можно написать и без yield, реализовав протокол вручную.