Встречается на собеседованиях • сегодня

Как реализовать генератор без использования yield

Можно создать класс, реализующий протокол итератора с методами __iter__ и __next__. Вот пример генератора чисел Фибоначчи:

python
class Fib:
    def __init__(self, limit):
        self.limit = limit
        self.a, self.b = 0, 1
        self.count = 0
text
def __iter__(self):
    return self

def __next__(self):
    if self.count >= self.limit:
        raise StopIteration
    value = self.a
    self.a, self.b = self.b, self.a + self.b
    self.count += 1
    return value

Использование:

for num in Fib(10):
print(num)

text

Этот класс ведет себя как генератор, сохраняя состояние между вызовами. При каждом вызове `__next__` он возвращает следующее значение последовательности.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы