Itérateurs
**********

Python provides two general-purpose iterator objects.  The first, a
sequence iterator, works with an arbitrary sequence supporting the
"__getitem__()" method.  The second works with a callable object and a
sentinel value, calling the callable for each item in the sequence,
and ending the iteration when the sentinel value is returned.

PyTypeObject PySeqIter_Type
    * Fait partie de l' ABI stable.*

   Type des itérateurs renvoyés par les fonctions "PySeqIter_New()" et
   la forme à un argument de la fonction native "iter()" pour les
   séquences natives.

int PySeqIter_Check(PyObject *op)

   Return true if the type of *op* is "PySeqIter_Type".  This function
   always succeeds.

PyObject *PySeqIter_New(PyObject *seq)
    *Valeur de retour : nouvelle référence.** Fait partie de l' ABI
   stable.*

   Renvoie un itérateur sur la séquence *seq*. L'itération prend fin
   lorsque la séquence lève "IndexError" lors d'une tentative d'accès.

PyTypeObject PyCallIter_Type
    * Fait partie de l' ABI stable.*

   Type de l'itérateur renvoyé par les fonctions "PyCallIter_New()" et
   "iter()" à deux arguments.

int PyCallIter_Check(PyObject *op)

   Return true if the type of *op* is "PyCallIter_Type".  This
   function always succeeds.

PyObject *PyCallIter_New(PyObject *callable, PyObject *sentinel)
    *Valeur de retour : nouvelle référence.** Fait partie de l' ABI
   stable.*

   Renvoie un nouvel itérateur. Le premier paramètre, *callable*, peut
   être n'importe quel objet Python appelable sans aucun paramètre ;
   chaque appel doit renvoyer l'élément suivant de l'itération.
   Lorsque *callable* renvoie une valeur égale à *sentinel*,
   l'itération prend fin.


Range Objects
=============

PyTypeObject PyRange_Type
    * Fait partie de l' ABI stable.*

   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  * Fait partie de l' ABI  | "enumerate"                                        |
| stable.*                                           |                                                    |
+----------------------------------------------------+----------------------------------------------------+
| PyTypeObject PyFilter_Type  * Fait partie de l'    | "filter"                                           |
| ABI stable.*                                       |                                                    |
+----------------------------------------------------+----------------------------------------------------+
| PyTypeObject PyMap_Type  * Fait partie de l' ABI   | "map"                                              |
| stable.*                                           |                                                    |
+----------------------------------------------------+----------------------------------------------------+
| PyTypeObject PyReversed_Type  * Fait partie de l'  | "reversed"                                         |
| ABI stable.*                                       |                                                    |
+----------------------------------------------------+----------------------------------------------------+
| PyTypeObject PyZip_Type  * Fait partie de l' ABI   | "zip"                                              |
| stable.*                                           |                                                    |
+----------------------------------------------------+----------------------------------------------------+


Other Iterator Objects
======================

PyTypeObject PyByteArrayIter_Type
    * Fait partie de l' ABI stable.*

PyTypeObject PyBytesIter_Type
    * Fait partie de l' ABI stable.*

PyTypeObject PyListIter_Type
    * Fait partie de l' ABI stable.*

PyTypeObject PyListRevIter_Type
    * Fait partie de l' ABI stable.*

PyTypeObject PySetIter_Type
    * Fait partie de l' ABI stable.*

PyTypeObject PyTupleIter_Type
    * Fait partie de l' ABI stable.*

PyTypeObject PyRangeIter_Type
    * Fait partie de l' ABI stable.*

PyTypeObject PyLongRangeIter_Type
    * Fait partie de l' ABI stable.*

PyTypeObject PyDictIterKey_Type
    * Fait partie de l' ABI stable.*

PyTypeObject PyDictRevIterKey_Type
    * Fait partie de l' ABI stable depuis la version 3.8.*

PyTypeObject PyDictIterValue_Type
    * Fait partie de l' ABI stable.*

PyTypeObject PyDictRevIterValue_Type
    * Fait partie de l' ABI stable depuis la version 3.8.*

PyTypeObject PyDictIterItem_Type
    * Fait partie de l' ABI stable.*

PyTypeObject PyDictRevIterItem_Type
    * Fait partie de l' ABI stable depuis la 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.
