> **Источник:** https://python-all.ru/3.11/c-api/iterator.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# Объекты-итераторы

Python предоставляет два универсальных объекта-итератора. Первый – итератор последовательности – работает с произвольной последовательностью, поддерживающей метод [`__getitem__()`](https://python-all.ru/3.11/reference/datamodel.html#object.__getitem__). Второй работает с вызываемым объектом и сигнальным значением: вызываемый объект вызывается для каждого элемента последовательности, а итерация завершается, когда возвращается сигнальное значение.

#### `PyTypeObject PySeqIter_Type`

*Часть [Stable ABI](https://python-all.ru/3.11/c-api/stable.html#stable).*

Объект типа для объектов-итераторов, возвращаемых [`PySeqIter_New()`](https://python-all.ru/3.11/c-api/iterator.html#c.PySeqIter_New) и одноаргументной формой встроенной функции [`iter()`](https://python-all.ru/3.11/library/functions.html#iter) для встроенных типов последовательностей.

#### `int PySeqIter_Check(PyObject *op)`

Возвращает true, если тип *op* – это [`PySeqIter_Type`](https://python-all.ru/3.11/c-api/iterator.html#c.PySeqIter_Type). Эта функция всегда завершается успешно.

#### `PyObject *PySeqIter_New(PyObject *seq)`

*Возвращаемое значение: новая ссылка.*

*Часть [Stable ABI](https://python-all.ru/3.11/c-api/stable.html#stable).*

Возвращает итератор, работающий с произвольным объектом последовательности *seq*. Итерация завершается, когда последовательность возбуждает исключение [`IndexError`](https://python-all.ru/3.11/library/exceptions.html#IndexError) при операции индексации.

#### `PyTypeObject PyCallIter_Type`

*Часть [Stable ABI](https://python-all.ru/3.11/c-api/stable.html#stable).*

Объект типа для объектов-итераторов, возвращаемых [`PyCallIter_New()`](https://python-all.ru/3.11/c-api/iterator.html#c.PyCallIter_New) и dвухаргументной формой встроенной функции [`iter()`](https://python-all.ru/3.11/library/functions.html#iter).

#### `int PyCallIter_Check(PyObject *op)`

Возвращает true, если тип *op* – это [`PyCallIter_Type`](https://python-all.ru/3.11/c-api/iterator.html#c.PyCallIter_Type). Эта функция всегда завершается успешно.

#### `PyObject *PyCallIter_New(PyObject *callable, PyObject *sentinel)`

*Возвращаемое значение: новая ссылка.*

*Часть [Stable ABI](https://python-all.ru/3.11/c-api/stable.html#stable).*

Возвращает новый итератор. Первый параметр, *callable*, может быть любым вызываемым объектом Python, который можно вызвать без параметров; каждый его вызов должен возвращать следующий элемент итерации. Когда *callable* возвращает значение, равное *sentinel*, итерация завершается.
