Встречается на собеседованиях • сегодня
Можно ли написать генератор без слова yield
Да, можно создать объект-генератор без использования yield, используя генераторные выражения. Они имеют синтаксис, похожий на списковые включения, но заключаются в круглые скобки.
Пример:
python
gen = (x ** 2 for x in range(5)) # генераторное выражение
print(next(gen)) # 0
print(next(gen)) # 1Также можно реализовать класс-итератор с методами __iter__ и __next__, который будет вести себя как генератор:
python
class SquareGenerator:
def __init__(self, limit):
self.n = 0
self.limit = limit
def __iter__(self):
return self
def __next__(self):
if self.n < self.limit:
result = self.n ** 2
self.n += 1
return result
raise StopIteration
gen = SquareGenerator(5)
print(next(gen)) # 0Оба подхода позволяют создавать ленивые итераторы без yield.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы