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

---

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

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

**[PyTypeObject](https://python-all.ru/3.1/c-api/type.html#PyTypeObject) `PySeqIter_Type`**

Объект-тип для объектов-итераторов, возвращаемых функцией

[`PySeqIter_New()`](https://python-all.ru/3.1/c-api/iterator.html#PySeqIter_New)

и формой с одним аргументом встроенной функции

[`iter()`](https://python-all.ru/3.1/library/functions.html#iter)

для встроенных типов последовательностей.

**int `PySeqIter_Check`(op)**

Возвращает истину, если тип

*op*

равен

[`PySeqIter_Type`](https://python-all.ru/3.1/c-api/iterator.html#PySeqIter_Type)

.

**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PySeqIter_New`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*seq*)**

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

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

**[PyTypeObject](https://python-all.ru/3.1/c-api/type.html#PyTypeObject) `PyCallIter_Type`**

Объект-тип для объектов-итераторов, возвращаемых функцией

[`PyCallIter_New()`](https://python-all.ru/3.1/c-api/iterator.html#PyCallIter_New)

и формой с двумя аргументами встроенной функции

[`iter()`](https://python-all.ru/3.1/library/functions.html#iter)

.

**int `PyCallIter_Check`(op)**

Возвращает истину, если тип

*op*

равен

[`PyCallIter_Type`](https://python-all.ru/3.1/c-api/iterator.html#PyCallIter_Type)

.

**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyCallIter_New`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*callable*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*sentinel*)**

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

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