blob: 82cb4eba8ab743a011059f419f9b59a061569272 [file] [log] [blame]
Georg Brandl54a3faa2008-01-20 09:30:57 +00001.. highlightlang:: c
2
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
Georg Brandl60203b42010-10-06 10:11:56 +000024 Return true if the type of *op* is :c:data:`PySeqIter_Type`.
Georg Brandl54a3faa2008-01-20 09:30:57 +000025
26
Georg Brandl60203b42010-10-06 10:11:56 +000027.. c:function:: PyObject* PySeqIter_New(PyObject *seq)
Georg Brandl54a3faa2008-01-20 09:30:57 +000028
29 Return an iterator that works with a general sequence object, *seq*. The
30 iteration ends when the sequence raises :exc:`IndexError` for the subscripting
31 operation.
32
33
Georg Brandl60203b42010-10-06 10:11:56 +000034.. c:var:: PyTypeObject PyCallIter_Type
Georg Brandl54a3faa2008-01-20 09:30:57 +000035
Georg Brandl60203b42010-10-06 10:11:56 +000036 Type object for iterator objects returned by :c:func:`PyCallIter_New` and the
Georg Brandl54a3faa2008-01-20 09:30:57 +000037 two-argument form of the :func:`iter` built-in function.
38
39
Georg Brandl60203b42010-10-06 10:11:56 +000040.. c:function:: int PyCallIter_Check(op)
Georg Brandl54a3faa2008-01-20 09:30:57 +000041
Georg Brandl60203b42010-10-06 10:11:56 +000042 Return true if the type of *op* is :c:data:`PyCallIter_Type`.
Georg Brandl54a3faa2008-01-20 09:30:57 +000043
44
Georg Brandl60203b42010-10-06 10:11:56 +000045.. c:function:: PyObject* PyCallIter_New(PyObject *callable, PyObject *sentinel)
Georg Brandl54a3faa2008-01-20 09:30:57 +000046
47 Return a new iterator. The first parameter, *callable*, can be any Python
48 callable object that can be called with no parameters; each call to it should
49 return the next item in the iteration. When *callable* returns a value equal to
50 *sentinel*, the iteration will be terminated.