В чем разница между итератором и генератором?

Итератор — объект с протоколом последовательной выдачи элементов. Генератор — конкретный вид итератора, создаваемый функцией с yield или генераторным выражением.

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

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

Итератор — объект с протоколом последовательной выдачи элементов. Генератор — конкретный вид итератора, создаваемый функцией с yield или генераторным выражением.

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

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

Итератор — объект с протоколом последовательной выдачи элементов. Генератор — конкретный вид итератора, создаваемый функцией с yield или генераторным выражением.

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

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

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

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

Подробнее