Этот вопрос проверяет понимание ленивых вычислений и механизмов итерации в Python.
Генератор в Python создается с помощью функции с ключевым словом yield. Он возвращает значения по одному, запоминая свое состояние. Генераторы экономят память. Они используются для работы с большими наборами данных. Генератор можно перебирать с помощью for.
Генераторы позволяют создавать последовательности значений без загрузки всех данных в память сразу, что делает их эффективными и удобными.
Определение: Генератор — это объект, который возвращает значения по одному при каждой итерации, сохраняя состояние между вызовами.
Работает лениво
Не хранит всю коллекцию целиком
Используется как итератор
Генератор создается функцией с yield вместо return.
def count_up_to(n):
i = 1
while i <= n:
yield i
i += 1
При вызове функция не выполняется сразу
Возвращается объект генератора
Код выполняется при итерации
Генераторы обычно используются в циклах.
for number in count_up_to(3):
print(number)
Python поддерживает компактный синтаксис генераторов.
squares = (x * x for x in range(5))
Похожи на list comprehension
Не создают список в памяти
Генераторы особенно полезны в backend-разработке.
Обработка больших файлов
Потоковая обработка данных
Работа с БД и очередями
Генераторы стоит использовать, когда нужно эффективно работать с большими или потенциально бесконечными последовательностями данных.