バージョン 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 {
/* 別の処理を続ける */
}
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。