В чем сходства между итератором и генератором в Python
Python
Middle
Arendadata
В чем сходства между итератором и генератором в Python
Ответы
Итераторы и генераторы в Python оба позволяют работать с последовательностями данных, но у них есть ключевые сходства:
- **Ленивое вычисление** – элементы обрабатываются по одному, а не все сразу, что экономит память.
- **Протокол итерации** – оба реализуют методы `__iter__()` и `__next__()`, что позволяет использовать их в циклах `for`.
- **Одноразовость** – после завершения итерации (достижения `StopIteration`) их нельзя переиспользовать без повторного создания.
Пример генератора (частный случай итератора):
```
def count_up_to(n):
i = 1
while i <= n:
yield i # генератор приостанавливается здесь
i += 1
# Использование как итератора
for num in count_up_to(5):
print(num)
```
Главное отличие: генераторы создаются с помощью `yield` и более лаконичны, а итераторы требуют явного описания `__next__()` и `__iter__()`.