Объекты-итераторы
Python предоставляет два итератора общего назначения. Первый, итератор последовательности, работает с произвольной последовательностью, поддерживающей метод __getitem__(). Второй работает с вызываемым объектом и значением-маркером, вызывая вызываемый объект для каждого элемента последовательности и завершая итерацию, когда возвращается значение-маркер.
-
PyTypeObject PySeqIter_Type -
Часть стабильного ABI.
Объект типа для объектов-итераторов, возвращаемых функцией
PySeqIter_New(), а также формой встроенной функцииiter()с одним аргументом для встроенных типов последовательностей.
-
int PySeqIter_Check(PyObject *op) -
Возвращает true, если тип op —
PySeqIter_Type. Эта функция всегда завершается успешно.
-
PyObject *PySeqIter_New(PyObject *seq) -
Возвращаемое значение: новая ссылка. Часть стабильного ABI.
Возвращает итератор, работающий с объектом последовательности общего назначения seq. Итерация завершается, когда последовательность вызывает исключение
IndexErrorпри операции индексирования.
-
PyTypeObject PyCallIter_Type -
Часть стабильного ABI.
Объект типа для объектов-итераторов, возвращаемых функцией
PyCallIter_New()и формой встроенной функцииiter()с двумя аргументами.
-
int PyCallIter_Check(PyObject *op) -
Возвращает true, если тип op —
PyCallIter_Type. Эта функция всегда завершается успешно.
-
PyObject *PyCallIter_New(PyObject *callable, PyObject *sentinel) -
Возвращаемое значение: новая ссылка. Часть стабильного ABI.
Возвращает новый итератор. Первый параметр, callable, может быть любым вызываемым объектом Python, который можно вызвать без параметров; каждый вызов должен возвращать следующий элемент итерации. Когда callable возвращает значение, равное sentinel, итерация завершается.
Объекты range
-
PyTypeObject PyRange_Type -
Часть стабильного ABI.
Объект типа для объектов
range.
-
int PyRange_Check(PyObject *o) -
Возвращает true, если объект o является экземпляром объекта
range. Эта функция всегда завершается успешно.
Встроенные типы итераторов
Это встроенные типы итераторов, включённые в C API Python, но не предоставляющие дополнительных функций. Они перечислены здесь для полноты.
Тип C | Тип Python |
|---|---|
| |
| |
| |
| |
|
Другие объекты-итераторы
-
PyTypeObject PyByteArrayIter_Type - Часть стабильного ABI.
-
PyTypeObject PyBytesIter_Type - Часть стабильного ABI.
-
PyTypeObject PyListIter_Type - Часть стабильного ABI.
-
PyTypeObject PyListRevIter_Type - Часть стабильного ABI.
-
PyTypeObject PySetIter_Type - Часть стабильного ABI.
-
PyTypeObject PyTupleIter_Type - Часть стабильного ABI.
-
PyTypeObject PyRangeIter_Type - Часть стабильного ABI.
-
PyTypeObject PyLongRangeIter_Type - Часть стабильного ABI.
-
PyTypeObject PyDictIterKey_Type - Часть стабильного ABI.
-
PyTypeObject PyDictRevIterKey_Type - Часть стабильного ABI начиная с версии 3.8.
-
PyTypeObject PyDictIterValue_Type - Часть стабильного ABI.
-
PyTypeObject PyDictRevIterValue_Type - Часть стабильного ABI начиная с версии 3.8.
-
PyTypeObject PyDictIterItem_Type - Часть стабильного ABI.
-
PyTypeObject PyDictRevIterItem_Type - Часть стабильного ABI начиная с версии 3.8.
-
PyTypeObject PyODictIter_Type -
Объекты типов для итераторов различных встроенных объектов.
Не создавайте экземпляры этих типов напрямую; вместо этого вызывайте
PyObject_GetIter().Обратите внимание, что нет гарантии, что конкретный встроенный тип использует определённый тип итератора. Например, при итерации по
rangeиспользуется один из двух типов итераторов в зависимости от размера диапазона. В будущем другие типы могут начать использовать аналогичную схему без предупреждения.
© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/c-api/iterator.html