Назад к вопросам
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))