Выбор ответа Junior Функции, замыкания, генераторы спрашивают часто обновлено

Зачем генераторы

Вопрос

Нужно обработать CSV на 5 ГБ построчно. Чем генератор с yield лучше функции, возвращающей массив строк?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: Строки отдаются по одной, в памяти только текущая. Функция с yield возвращает объект Generator, а код выполняется по мере перебора: прочитали строку, отдали, забыли.

Варианты ответа

  1. Генератор читает файл в несколько потоков параллельно
  2. Строки отдаются по одной, в памяти только текущаяправильный ответ
  3. Генератор кеширует файл и ускоряет повторный проход по нему
  4. Генератор автоматически сжимает прочитанные строки в памяти

Разбор

Функция с yield возвращает объект Generator, а код выполняется по мере перебора: прочитали строку, отдали, забыли. Потребление памяти не зависит от размера файла. Многопоточности генераторы не дают, повторно пройти генератор нельзя (он одноразовый), сжатия нет.

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

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