GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • index
  • modules
  • next
  • previous
  • Python
  • 3.2.6 Documentation
  • Python/C API Reference Manual
  • Abstract Objects Layer
  • Report a Bug
  • Show Source

This view

  • Original page
  • New address

GeezerVison is showing docs.python.org — Iterator Protocol — Python v3.2.6 documentation

Navigation

  • index
  • modules |
  • next |
  • previous |
  • Python »
  • 3.2.6 Documentation »
  • Python/C API Reference Manual »
  • Abstract Objects Layer »

Iterator Protocol¶

There are only a couple of functions specifically for working with iterators.

int PyIter_Check(PyObject *o)¶

Return true if the object o supports the iterator protocol.

PyObject* PyIter_Next(PyObject *o)¶
Return value: New reference.

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, 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 */
}

Previous topic

Mapping Protocol

Next topic

Buffer Protocol

This Page

  • Report a Bug
  • Show Source

Quick search

Enter search terms or a module, class or function name.

Navigation

  • index
  • modules |
  • next |
  • previous |
  • Python »
  • 3.2.6 Documentation »
  • Python/C API Reference Manual »
  • Abstract Objects Layer »
© Copyright 1990-2014, Python Software Foundation.
The Python Software Foundation is a non-profit corporation. Please donate.
Last updated on Oct 12, 2014. Found a bug?
Created using Sphinx 1.0.7.
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.