Sobes.tech
Back to questions
Junior — Middle
70

Какие существуют методы реализации генератора в программировании?

Companies where asked
Т-БанкТ-Банк

Answer from AI

sobes.tech AI

В программировании генератор — это объект, который позволяет итерироваться по последовательности значений, вычисляя их по мере необходимости, а не сразу.

В Python основные методы реализации генераторов:

  1. Использование ключевого слова yield в функции — самый распространённый способ. Функция с yield приостанавливает выполнение и возвращает значение, сохраняя своё состояние для следующего вызова.
def count_up_to(n):
    count = 1
    while count <= n:
        yield count
        count += 1

for number in count_up_to(5):
    print(number)
  1. Генераторные выражения — компактный способ создания генераторов, похожий на списковые включения, но с круглой скобкой.
squares = (x*x for x in range(5))
for sq in squares:
    print(sq)
  1. Создание класса с методом __iter__ и __next__ — более низкоуровневый способ, где объект сам реализует протокол итератора.
class CountUpTo:
    def __init__(self, n):
        self.n = n
        self.current = 1
    def __iter__(self):
        return self
    def __next__(self):
        if self.current > self.n:
            raise StopIteration
        val = self.current
        self.current += 1
        return val

for number in CountUpTo(5):
    print(number)

Все эти методы позволяют создавать последовательности значений без необходимости хранить их все в памяти сразу.