Ответ вслух Junior Итераторы и генераторы спрашивают часто обновлено

Генераторы в Python: что это и зачем

Вопрос

Что такое генератор в Python и когда вы его применяете?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Генератор это функция, в теле которой есть yield. При вызове она не выполняется, а возвращает объект-генератор, это итератор.

Что должно прозвучать в ответе

  • Функция с `yield` возвращает итератор, тело выполняется по `next`

  • Состояние замораживается между `yield`

  • Ленивость: элементы по требованию, экономия памяти

  • Генераторные выражения в круглых скобках

  • Применение: большие файлы, потоковая обработка, бесконечные последовательности, конвейеры

  • Одноразовость и отсутствие `len`

Что могут спросить следом

  • Чем yield отличается от return?
  • Что будет при повторном обходе генератора?
  • Как прочитать файл на 50 ГБ построчно?

Разбор

Образцовый ответ: «Генератор это функция, в теле которой есть yield. При вызове она не выполняется, а возвращает объект-генератор, это итератор. Каждый next() выполняет код до ближайшего yield, отдаёт значение и замораживает состояние функции: локальные переменные и место выполнения. Когда функция заканчивается, итерация прекращается через StopIteration. Главный плюс в ленивости: элементы считаются по требованию, и в памяти нет всей последовательности. Например, обработка лога на десятки гигабайт: генератор читает строку, фильтрует, отдаёт дальше, и память постоянная. Генераторы удобно складывать в конвейер: чтение, разбор, фильтр, islice первых N. Для простых случаев есть генераторные выражения в круглых скобках, их часто передают прямо в sum или any. Ограничения: генератор одноразовый, у него нет длины и индексов. Если данные нужны несколько раз, материализую в список».

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме