Встречается на 1% собеседований по Python
Как понимаешь фразу, что любой генератор это итератор, но не любой итератор это генератор
Генератор — это частный случай итератора, который создаётся с помощью функции с yield или генераторного выражения. Он лениво вычисляет значения по требованию и сохраняет состояние между вызовами.
Любой генератор является итератором, потому что он реализует методы __iter__() и __next__(). Однако не каждый итератор — генератор. Например, итератор может быть создан вручную через класс, реализующий протокол итератора:
python
class MyIterator:
def __init__(self, max_val):
self.current = 0
self.max_val = max_val
def __iter__(self):
return self
def __next__(self):
if self.current < self.max_val:
self.current += 1
return self.current
raise StopIteration
# Это итератор, но не генератор
it = MyIterator(5)
for num in it:
print(num)Генератор же создаётся проще и автоматически реализует протокол итератора:
python
def my_generator(max_val):
current = 0
while current < max_val:
current += 1
yield current
# Это и генератор, и итератор
gen = my_generator(5)
for num in gen:
print(num)Итог: генераторы — это удобный синтаксический сахар для создания итераторов, но не все итераторы являются генераторами.

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