[имя] спросил: Что такое генераторы и итераторы в Python? В чём разница?

Итератор выдаёт элементы по одному через __next__ и возвращает себя из __iter__. Генератор — удобный способ создать итератор с сохранением состояния через yield.

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

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

Итератор выдаёт элементы по одному через next и возвращает себя из iter. Генератор — удобный способ создать итератор с сохранением состояния через yield.

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

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

Итератор выдаёт элементы по одному через next и возвращает себя из iter. Генератор — удобный способ создать итератор с сохранением состояния через yield.

Генераторная функция при вызове возвращает generator object, а её тело начинает выполняться при продвижении итерации. После yield выполнение приостанавливается и затем продолжается с того же места. Не каждый iterator является generator: можно написать собственный класс. Iterable шире iterator: список можно многократно обходить, создавая новые итераторы. Генератор обычно одноразовый и вычисляет значения лениво, но не делает тяжёлую операцию внутри каждого шага автоматически дешёвой.

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

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

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

Подробнее