バージョン 2.2 で 新たに追加 された仕様です。
イテレータを扱うための固有の関数は二つしかありません。
PyObject *o) |
PyObject *o) |
イテレータの返す要素にわたって反復処理を行うループを書くと、 C のコードは以下のようになるはずです:
PyObject *iterator = PyObject_GetIter(obj); PyObject *item; if (iterator == NULL) { /* エラーの伝播処理をここに書く */ } while (item = PyIter_Next(iterator)) { /* 取り出した要素で何らかの処理を行う */ ... /* 終わったら参照を放棄する */ Py_DECREF(item); } Py_DECREF(iterator); if (PyErr_Occurred()) { /* エラーの伝播処理をここに書く */ } else { /* 別の処理を続ける */ }
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。