Что общего у генератора и итератора в 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`), а итераторы требуют явного описания класса.