Генератор в Python выдаёт значения постепенно и сохраняет состояние между обращениями. Функция с yield при вызове возвращает генератор, а не выполняется целиком сразу.
Что такое генератор в Python?
Генератор в Python выдаёт значения постепенно и сохраняет состояние между обращениями. Функция с yield при вызове возвращает генератор, а не выполняется целиком сразу.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Генератор в Python выдаёт значения постепенно и сохраняет состояние между обращениями. Функция с yield при вызове возвращает генератор, а не выполняется целиком сразу.
Итерация или next() возобновляет выполнение до следующего yield. Когда функция заканчивается, итератор сигнализирует StopIteration. Например, (x * x for x in range(3)) выдаст 0, 1 и 4 без предварительного построения списка результатов. Генератор обычно однопроходный: для повторного обхода создают новый. Экономия памяти зависит и от самого алгоритма — если внутри накоплен большой список, ленивый интерфейс его не устранит.