PATH:
usr
/
share
/
doc
/
python-docs-2.7.5
/
html
/
_sources
/
c-api
.. highlightlang:: c .. _iterator: Iterator Protocol ================= .. versionadded:: 2.2 There are only a couple of functions specifically for working with iterators. .. c:function:: int PyIter_Check(PyObject *o) Return true if the object *o* supports the iterator protocol. .. c:function:: PyObject* PyIter_Next(PyObject *o) Return the next value from the iteration *o*. If the object is an iterator, this retrieves the next value from the iteration, and returns *NULL* with no exception set if there are no remaining items. If the object is not an iterator, :exc:`TypeError` is raised, or if there is an error in retrieving the item, returns *NULL* and passes along the exception. To write a loop which iterates over an iterator, the C code should look something like this:: PyObject *iterator = PyObject_GetIter(obj); PyObject *item; if (iterator == NULL) { /* propagate error */ } while (item = PyIter_Next(iterator)) { /* do something with item */ ... /* release reference when done */ Py_DECREF(item); } Py_DECREF(iterator); if (PyErr_Occurred()) { /* propagate error */ } else { /* continue doing useful work */ }
[-] string.txt
[edit]
[-] long.txt
[edit]
[-] tuple.txt
[edit]
[-] type.txt
[edit]
[-] utilities.txt
[edit]
[-] module.txt
[edit]
[-] reflection.txt
[edit]
[-] list.txt
[edit]
[-] buffer.txt
[edit]
[-] none.txt
[edit]
[-] datetime.txt
[edit]
[-] gcsupport.txt
[edit]
[-] cobject.txt
[edit]
[-] veryhigh.txt
[edit]
[-] init.txt
[edit]
[+]
..
[-] index.txt
[edit]
[-] refcounting.txt
[edit]
[-] gen.txt
[edit]
[-] dict.txt
[edit]
[-] sequence.txt
[edit]
[-] weakref.txt
[edit]
[-] set.txt
[edit]
[-] int.txt
[edit]
[-] class.txt
[edit]
[-] float.txt
[edit]
[-] objimpl.txt
[edit]
[-] mapping.txt
[edit]
[-] abstract.txt
[edit]
[-] import.txt
[edit]
[-] method.txt
[edit]
[-] complex.txt
[edit]
[-] concrete.txt
[edit]
[-] iter.txt
[edit]
[-] function.txt
[edit]
[-] iterator.txt
[edit]
[-] unicode.txt
[edit]
[-] file.txt
[edit]
[-] conversion.txt
[edit]
[-] memory.txt
[edit]
[-] bool.txt
[edit]
[-] object.txt
[edit]
[-] bytearray.txt
[edit]
[-] marshal.txt
[edit]
[-] slice.txt
[edit]
[-] descriptor.txt
[edit]
[-] arg.txt
[edit]
[-] codec.txt
[edit]
[-] code.txt
[edit]
[-] cell.txt
[edit]
[-] number.txt
[edit]
[-] objbuffer.txt
[edit]
[-] sys.txt
[edit]
[-] typeobj.txt
[edit]
[-] exceptions.txt
[edit]
[-] intro.txt
[edit]
[-] allocation.txt
[edit]
[-] structures.txt
[edit]
[-] capsule.txt
[edit]