Check

Протокол итератора и генераторы

Python Senior Яндекс
Опишите протокол итератора в Python (`__iter__`, `__next__`) и объясните, чем генераторная функция отличается от обычной. Когда выгоднее использовать генератор?
Ответы
Итераторы и генераторы
Итератор — объект с методом `__next__`, который возвращает следующий элемент или бросает `StopIteration`. Итерируемый объект реализует `__iter__`, который возвращает итератор. Генераторная функция — функция, содержащая `yield`. Вызов такой функции возвращает генератор (итератор), который вычисляет значения лениво. Генераторы выгодны, когда: - данных много или они потенциально бесконечны, - не нужно держать всё в памяти, - важно отложенное вычисление (построение пайплайнов).