Back to questions
Junior — Middle
52
Можно ли реализовать функцию-генератор в языке программирования без использования ключевого слова yield?
Answer from AI
sobes.tech AI
Да, функцию-генератор в Python можно реализовать без использования ключевого слова yield, например, с помощью класса, реализующего итератор. Такой класс должен иметь методы __iter__() и __next__(), которые будут возвращать следующий элемент последовательности при каждом вызове.
Пример реализации генератора чисел Фибоначчи без yield:
class Fib:
def __init__(self, n):
self.n = n
self.i = 0
self.a, self.b = 0, 1
def __iter__(self):
return self
def __next__(self):
if self.i >= self.n:
raise StopIteration
self.i += 1
a = self.a
self.a, self.b = self.b, self.a + self.b
return a
for num in Fib(5):
print(num)
Таким образом, генератор можно реализовать вручную через итератор, без yield. Однако yield упрощает написание таких функций.