Встречается на собеседованиях • сегодня
Как реализовать генератор без использования 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__` он возвращает следующее значение последовательности.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы