# Ітератор об’єктів

Python надає два об’єкти-ітератори загального призначення. Перший, ітератор послідовності, працює з довільною послідовністю, що підтримує метод `__getitem__()`. Другий працює з викликаним об’єктом і контрольним значенням, викликаючи викликаний об’єкт для кожного елемента в послідовності та закінчуючи ітерацію, коли повертається контрольне значення.

PyTypeObject PySeqIter_Type
  Part of the Stable ABI.

  Об’єкт типу для об’єктів-ітераторів, які повертає `PySeqIter_New()`, і форма з одним аргументом вбудованої функції `iter()` для вбудованих типів послідовностей.

int PySeqIter_Check(PyObject *op)

  Повертає true, якщо op має тип `PySeqIter_Type`. Ця функція завжди успішна.

PyObject *PySeqIter_New(PyObject *seq)
  Return value: New reference. Part of the Stable ABI.

  Повертає ітератор, який працює з об’єктом загальної послідовності seq. Ітерація завершується, коли послідовність викликає `IndexError` для операції підписання.

PyTypeObject PyCallIter_Type
  Part of the Stable ABI.

  Об’єкт типу для об’єктів-ітераторів, що повертаються `PyCallIter_New()` і формою з двома аргументами вбудованої функції `iter()`.

int PyCallIter_Check(PyObject *op)

  Повертає true, якщо тип op `PyCallIter_Type`. Ця функція завжди успішна.

PyObject *PyCallIter_New(PyObject *callable, PyObject *sentinel)
  Return value: New reference. Part of the Stable ABI.

  Повернути новий ітератор. Перший параметр, callable, може бути будь-яким викликаним об’єктом Python, який можна викликати без параметрів; кожен виклик має повертати наступний елемент ітерації. Коли callable повертає значення, рівне sentinel, ітерація буде припинена.

## Range Objects

PyTypeObject PyRange_Type
  Part of the Stable ABI.

  The type object for `range` objects.

int PyRange_Check(PyObject *o)

  Return true if the object o is an instance of a `range` object. This function always succeeds.

## Builtin Iterator Types

These are built-in iteration types that are included in Python’s C API, but provide no additional functions. They are here for completeness.

C type | Python type
--- | ---
PyTypeObject PyEnum_Type Part of the Stable ABI. | `enumerate`
PyTypeObject PyFilter_Type Part of the Stable ABI. | `filter`
PyTypeObject PyMap_Type Part of the Stable ABI. | `map`
PyTypeObject PyReversed_Type Part of the Stable ABI. | `reversed`
PyTypeObject PyZip_Type Part of the Stable ABI. | `zip`

## Other Iterator Objects

PyTypeObject PyByteArrayIter_Type
  Part of the Stable ABI.

PyTypeObject PyBytesIter_Type
  Part of the Stable ABI.

PyTypeObject PyListIter_Type
  Part of the Stable ABI.

PyTypeObject PyListRevIter_Type
  Part of the Stable ABI.

PyTypeObject PySetIter_Type
  Part of the Stable ABI.

PyTypeObject PyTupleIter_Type
  Part of the Stable ABI.

PyTypeObject PyRangeIter_Type
  Part of the Stable ABI.

PyTypeObject PyLongRangeIter_Type
  Part of the Stable ABI.

PyTypeObject PyDictIterKey_Type
  Part of the Stable ABI.

PyTypeObject PyDictRevIterKey_Type
  Part of the Stable ABI since version 3.8.

PyTypeObject PyDictIterValue_Type
  Part of the Stable ABI.

PyTypeObject PyDictRevIterValue_Type
  Part of the Stable ABI since version 3.8.

PyTypeObject PyDictIterItem_Type
  Part of the Stable ABI.

PyTypeObject PyDictRevIterItem_Type
  Part of the Stable ABI since version 3.8.

PyTypeObject PyODictIter_Type

  Type objects for iterators of various built-in objects.

  Do not create instances of these directly; prefer calling `PyObject_GetIter()` instead.

  Note that there is no guarantee that a given built-in type uses a given iterator type. For example, iterating over `range` will use one of two iterator types depending on the size of the range. Other types may start using a similar scheme in the future, without warning.