Skip to content

Commit 8d87c22

Browse files
committed
feat: add iterator page
1 parent 6364b21 commit 8d87c22

1 file changed

Lines changed: 23 additions & 0 deletions

File tree

docs/python/iterator.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
!!! info ""
2+
**Итератор** - это объект с методами `__iter__()` и `__next__()`, который позволяет проходиться по элементам коллекции поочерёдно, по одному за раз.
3+
Когда элементов больше нет, `__next__()` вызывает исключение `StopIteration`.
4+
5+
## Подробный ответ
6+
7+
Протокол итерации: Объект считается итератором, если он поддерживает два метода:
8+
9+
- `__iter__(self)`: Возвращает сам объект итератора. Это позволяет итераторам быть итерируемыми.
10+
- `__next__(self)`: Возвращает следующий элемент из последовательности. Если элементов больше нет, должен вызвать StopIteration.
11+
12+
## Использование:
13+
Цикл `for` в Python неявно использует итераторы.
14+
Когда вы пишете <span class="badge">for item in iterable:</span>, python в начале вызывает <span class="badge">iter(iterable)</span>,
15+
чтобы получить итератор, а затем многократно вызывает <span class="badge">next(iterator)</span> до тех пор, пока не будет вызвано
16+
<span class="badge">StopIteration</span>.
17+
18+
## Преимущества итераторов:
19+
20+
- Эффективность памяти: Элементы генерируются по требованию (lazy evaluation), а не хранятся все сразу в памяти.
21+
Это позволяет работать с огромными или даже бесконечными последовательностями.
22+
- Универсальность: Единый интерфейс для работы с разными типами коллекций — списками, файлами, генераторами, базами данных.
23+
- Простота использования: Скрывают сложность последовательного доступа за простым интерфейсом цикла for.

0 commit comments

Comments
 (0)