Встречается на собеседованиях • сегодня
В чем разница между генератором и итератором
Каждый генератор является итератором, но не каждый итератор является генератором.
Итератор
- Это объект, который реализует протокол итератора: методы __iter__() и __next__().
- Его главная задача — предоставлять следующий элемент по запросу и сигнализировать о конце последовательности.
Пример:
text
class Counter:
def __init__(self, low, high):
self.current = low
self.high = high
def __iter__(self):
return self
def __next__(self):
if self.current > self.high:
raise StopIteration
else:
self.current += 1
return self.current - 1
Использование
c = Counter(3, 5)
print(next(c)) # 3
print(next(c)) # 4
text
**Генератор**
\- Это **особый вид итератора**, но гораздо более простой в написании.
\- Он не требует создания класса с методами `__iter__` и `__next__`. Вместо этого используется **функция с ключевым словом** `yield`.
\- Генератор **"ленивый"** — он генерирует значения по одному и по требованию, а не хранит всю последовательность в памяти.
_Пример. Функция-генератор (с помощью_ `yield`_):_
def counter_generator(low, high):
current = low
while current <= high:
yield current # Возвращает значение и "замораживает" состояние функции
current += 1
Использование
gen = counter_generator(3, 5) # Создает объект-генератор
print(next(gen)) # 3 (значение первого yield)
print(next(gen)) # 4 (значение второго yield)
text
_Пример. Генераторное выражение_
Генераторное выражение
numbers = (x * 2 for x in range(5))
print(next(numbers)) # 0
print(next(numbers)) # 2
text
**Аналогия**
Представьте, что вам нужно прочитать книгу:
**\- Итерируемый объект** (как список) — это **вся книга целиком**, лежащая на столе.
**\- Итератор** — это **процесс чтения**. Вы можете читать ее сами (реализовать логику в классе), листая страницы.
**\- Генератор** — это **автоматическое устройство**, которое подает вам по одной странице из книги по вашей команде. Вам не нужно знать, как оно это делает, вы просто получаете страницы.как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы
