Что общего у генератора и итератора в Python
Python
Junior
Рунити
Что общего у генератора и итератора в Python
Ответы
Генераторы и итераторы в Python оба позволяют работать с последовательностями элементов, но генератор — это частный случай итератора.
**Общие черты:**
- Оба реализуют протокол итератора (методы `__iter__()` и `__next__()`).
- Позволяют ленивую (по требованию) обработку данных, экономя память.
- Одноразовые — после исчерпания элементов нельзя переиспользовать.
**Пример:**
```
# Итератор
class MyIterator:
def __init__(self, max_num):
self.max_num = max_num
self.current = 0
def __iter__(self):
return self
def __next__(self):
if self.current < self.max_num:
self.current += 1
return self.current
raise StopIteration
# Генератор (упрощенная версия)
def my_generator(max_num):
current = 0
while current < max_num:
current += 1
yield current
# Оба можно использовать в for-цикле
for num in MyIterator(3):
print(num) # 1, 2, 3
for num in my_generator(3):
print(num) # 1, 2, 3
```
Генераторы проще в написании (через `yield`), а итераторы требуют явного описания класса.