Встречается на 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
интервью вопросы и ответы