Генератор выдаёт значения по мере запроса и сохраняет состояние между yield. Функцию-генератор можно узнать по yield в её теле, а генераторное выражение — по синтаксису с круглыми скобками.
Что такое генератор, как он работает, в чём его оптимальность и как отличить его в коде?
Генератор выдаёт значения по мере запроса и сохраняет состояние между yield. Функцию-генератор можно узнать по yield в её теле, а генераторное выражение — по синтаксису с круглыми скобками.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Генератор выдаёт значения по мере запроса и сохраняет состояние между yield. Функцию-генератор можно узнать по yield в её теле, а генераторное выражение — по синтаксису с круглыми скобками.
Вызов функции-генератора возвращает объект итератора, не выполняя сразу весь обход. Next возобновляет выполнение до очередного yield или завершения. Это удобно для больших потоков: не требуется хранить все результаты одновременно. Но генератор одноразовый и может удерживать ресурсы и локальные объекты. Если затем вызвать list(), все значения всё равно будут собраны в память.