Назад к вопросам
Junior
62
questionbank
Что особенного в генераторах в Python?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
- Ленивое вычисление: Элементы генерируются по мере необходимости, а не все сразу.
- Экономия памяти: Генераторы не хранят всю последовательность в памяти, что критично для больших данных.
- Использование итераторов: Генератор — это тоже итератор, поддерживающий протокол итератора
__iter__()и__next__(). - Использование ключевого слова
yield: Функция сyieldстановится генератором. При каждом вызовеnext()генератор возобновляет выполнение после последнегоyield.
# Пример генератора
def my_generator():
print("Начинаем")
yield 1
print("Продолжаем")
yield 2
print("Заканчиваем")
# Использование генератора
gen = my_generator()
print(next(gen))
print(next(gen))
# print(next(gen)) # Вызовет StopIteration
- генераторные выражения (generator expressions): более компактный синтаксис для создания простых генераторов, похожий на списковые включения, но в круглых скобках.
# Пример генераторного выражения
gen_exp = (x*x for x in range(5))
# Использование генераторного выражения
print(next(gen_exp))
print(next(gen_exp))