iterator.md
1> **Источник:** https://python-all.ru/3.13/c-api/iterator.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Объекты-итераторы89Python предоставляет два универсальных объекта-итератора. Первый – итератор последовательности – работает с произвольной последовательностью, поддерживающей метод [`__getitem__()`](https://python-all.ru/3.13/reference/datamodel.html#object.__getitem__). Второй работает с вызываемым объектом и сигнальным значением: вызываемый объект вызывается для каждого элемента последовательности, а итерация завершается, когда возвращается сигнальное значение.1011#### `PyTypeObject PySeqIter_Type`1213*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*1415Объект типа для объектов-итераторов, возвращаемых [`PySeqIter_New()`](https://python-all.ru/3.13/c-api/iterator.html#c.PySeqIter_New) и одноаргументной формой встроенной функции [`iter()`](https://python-all.ru/3.13/library/functions.html#iter) для встроенных типов последовательностей.1617#### `int PySeqIter_Check(PyObject *op)`1819Возвращает true, если тип *op* – это [`PySeqIter_Type`](https://python-all.ru/3.13/c-api/iterator.html#c.PySeqIter_Type). Эта функция всегда завершается успешно.2021#### `PyObject *PySeqIter_New(PyObject *seq)`2223*Возвращаемое значение: новая ссылка.*2425*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*2627Возвращает итератор, работающий с произвольным объектом последовательности *seq*. Итерация завершается, когда последовательность возбуждает исключение [`IndexError`](https://python-all.ru/3.13/library/exceptions.html#IndexError) при операции индексации.2829#### `PyTypeObject PyCallIter_Type`3031*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*3233Объект типа для объектов-итераторов, возвращаемых [`PyCallIter_New()`](https://python-all.ru/3.13/c-api/iterator.html#c.PyCallIter_New) и dвухаргументной формой встроенной функции [`iter()`](https://python-all.ru/3.13/library/functions.html#iter).3435#### `int PyCallIter_Check(PyObject *op)`3637Возвращает true, если тип *op* – это [`PyCallIter_Type`](https://python-all.ru/3.13/c-api/iterator.html#c.PyCallIter_Type). Эта функция всегда завершается успешно.3839#### `PyObject *PyCallIter_New(PyObject *callable, PyObject *sentinel)`4041*Возвращаемое значение: новая ссылка.*4243*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*4445Возвращает новый итератор. Первый параметр, *callable*, может быть любым вызываемым объектом Python, который можно вызвать без параметров; каждый его вызов должен возвращать следующий элемент итерации. Когда *callable* возвращает значение, равное *sentinel*, итерация завершается.4647## Объекты диапазона4849#### `PyTypeObject PyRange_Type`5051*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*5253Объект типа для объектов [`range`](https://python-all.ru/3.13/library/stdtypes.html#range).5455#### `int PyRange_Check(PyObject *o)`5657Возвращает true, если объект *o* является экземпляром объекта [`range`](https://python-all.ru/3.13/library/stdtypes.html#range). Эта функция всегда завершается успешно.5859## Встроенные типы итераторов6061Это встроенные типы итераций, включённые в C API Python, но не предоставляющие дополнительных функций. Они приведены здесь для полноты.6263| Тип C | Тип Python |64| --- | --- |65| [PyTypeObject](https://python-all.ru/3.13/c-api/type.html#c.PyTypeObject) PyEnum\_Type *Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).* | [`enumerate`](https://python-all.ru/3.13/library/functions.html#enumerate) |66| [PyTypeObject](https://python-all.ru/3.13/c-api/type.html#c.PyTypeObject) PyFilter\_Type *Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).* | [`filter`](https://python-all.ru/3.13/library/functions.html#filter) |67| [PyTypeObject](https://python-all.ru/3.13/c-api/type.html#c.PyTypeObject) PyMap\_Type *Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).* | [`map`](https://python-all.ru/3.13/library/functions.html#map) |68| [PyTypeObject](https://python-all.ru/3.13/c-api/type.html#c.PyTypeObject) PyReversed\_Type *Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).* | [`reversed`](https://python-all.ru/3.13/library/functions.html#reversed) |69| [PyTypeObject](https://python-all.ru/3.13/c-api/type.html#c.PyTypeObject) PyZip\_Type *Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).* | [`zip`](https://python-all.ru/3.13/library/functions.html#zip) |7071## Другие объекты-итераторы7273#### `PyTypeObject PyByteArrayIter_Type`7475*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*7677#### `PyTypeObject PyBytesIter_Type`7879*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*8081#### `PyTypeObject PyListIter_Type`8283*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*8485#### `PyTypeObject PyListRevIter_Type`8687*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*8889#### `PyTypeObject PySetIter_Type`9091*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*9293#### `PyTypeObject PyTupleIter_Type`9495*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*9697#### `PyTypeObject PyRangeIter_Type`9899*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*100101#### `PyTypeObject PyLongRangeIter_Type`102103*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*104105#### `PyTypeObject PyDictIterKey_Type`106107*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*108109#### `PyTypeObject PyDictRevIterKey_Type`110111*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable) с версии 3.8.*112113#### `PyTypeObject PyDictIterValue_Type`114115*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*116117#### `PyTypeObject PyDictRevIterValue_Type`118119*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable) с версии 3.8.*120121#### `PyTypeObject PyDictIterItem_Type`122123*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable).*124125#### `PyTypeObject PyDictRevIterItem_Type`126127*Часть [Stable ABI](https://python-all.ru/3.13/c-api/stable.html#stable) с версии 3.8.*128129#### `PyTypeObject PyODictIter_Type`130131Объекты типа для итераторов различных встроенных объектов.132133Не следует создавать экземпляры этих объектов напрямую; вместо этого следует вызывать [`PyObject_GetIter()`](https://python-all.ru/3.13/c-api/object.html#c.PyObject_GetIter).134135Обратите внимание, что нет гарантии, что конкретный встроенный тип использует определённый тип итератора. Например, итерация по [`range`](https://python-all.ru/3.13/library/stdtypes.html#range) будет использовать один из двух типов итераторов в зависимости от размера диапазона. Другие типы могут начать использовать подобную схему в будущем без предупреждения.136