blob: 3fcf099134d4dd418ca6da2692433d6103baef5d [file] [log] [blame]
Stéphane Wirtelcbb64842019-05-17 11:55:34 +02001.. highlight:: c
Georg Brandl54a3faa2008-01-20 09:30:57 +00002
3.. _iterator-objects:
4
5Iterator Objects
6----------------
7
8Python provides two general-purpose iterator objects. The first, a sequence
9iterator, works with an arbitrary sequence supporting the :meth:`__getitem__`
10method. The second works with a callable object and a sentinel value, calling
11the callable for each item in the sequence, and ending the iteration when the
12sentinel value is returned.
13
14
Georg Brandl60203b42010-10-06 10:11:56 +000015.. c:var:: PyTypeObject PySeqIter_Type
Georg Brandl54a3faa2008-01-20 09:30:57 +000016
Georg Brandl60203b42010-10-06 10:11:56 +000017 Type object for iterator objects returned by :c:func:`PySeqIter_New` and the
Georg Brandl54a3faa2008-01-20 09:30:57 +000018 one-argument form of the :func:`iter` built-in function for built-in sequence
19 types.
20
21
Georg Brandl60203b42010-10-06 10:11:56 +000022.. c:function:: int PySeqIter_Check(op)
Georg Brandl54a3faa2008-01-20 09:30:57 +000023
Antonio Cuni315fc522021-01-06 12:38:26 +010024 Return true if the type of *op* is :c:data:`PySeqIter_Type`. This function
25 always succeeds.
Georg Brandl54a3faa2008-01-20 09:30:57 +000026
27
Georg Brandl60203b42010-10-06 10:11:56 +000028.. c:function:: PyObject* PySeqIter_New(PyObject *seq)
Georg Brandl54a3faa2008-01-20 09:30:57 +000029
30 Return an iterator that works with a general sequence object, *seq*. The
31 iteration ends when the sequence raises :exc:`IndexError` for the subscripting
32 operation.
33
34
Georg Brandl60203b42010-10-06 10:11:56 +000035.. c:var:: PyTypeObject PyCallIter_Type
Georg Brandl54a3faa2008-01-20 09:30:57 +000036
Georg Brandl60203b42010-10-06 10:11:56 +000037 Type object for iterator objects returned by :c:func:`PyCallIter_New` and the
Georg Brandl54a3faa2008-01-20 09:30:57 +000038 two-argument form of the :func:`iter` built-in function.
39
40
Georg Brandl60203b42010-10-06 10:11:56 +000041.. c:function:: int PyCallIter_Check(op)
Georg Brandl54a3faa2008-01-20 09:30:57 +000042
Antonio Cuni315fc522021-01-06 12:38:26 +010043 Return true if the type of *op* is :c:data:`PyCallIter_Type`. This
44 function always succeeds.
Georg Brandl54a3faa2008-01-20 09:30:57 +000045
46
Georg Brandl60203b42010-10-06 10:11:56 +000047.. c:function:: PyObject* PyCallIter_New(PyObject *callable, PyObject *sentinel)
Georg Brandl54a3faa2008-01-20 09:30:57 +000048
49 Return a new iterator. The first parameter, *callable*, can be any Python
50 callable object that can be called with no parameters; each call to it should
51 return the next item in the iteration. When *callable* returns a value equal to
52 *sentinel*, the iteration will be terminated.