Python
- 4. 其他流程控制工具
- 4.1. if语句
- 4.2. for语句
- 4.3. range()函数
- 4.4. 循环中的break、continue语句及else子句
- 4.5. pass语句
- 4.6. 定义函数
- 4.7. 函数定义详解
- 4.7.1. 默认值参数
- 4.7.2. 关键字参数
- 4.7.3. 特殊参数
- 4.7.3.1. 位置或关键字参数
- 4.7.3.2. 仅位置参数
- 4.7.3.3. 仅限关键字参数
- 4.7.3.4. 函数示例
- 4.7.3.5. 小结
- 4.7.4. 任意实参列表
- 4.7.5. 解包实参列表
- 4.7.6. Lambda 表达式
- 4.7.7. 文档字符串
- 4.7.8. 函数注解
- 4.8. 小插曲:编码风格
capi/iter
迭代器协议¶
迭代器有两个函数。
-
PyObject*
PyIter_Next
(PyObject *o)¶ - Return value: New reference.
返回迭代 o 的下一个值。 对象必须是一个迭代器(这应由调用者来判断)。 如果没有余下的值,则返回
NULL
并且不设置异常。 如果在获取条目时发生了错误,则返回NULL
并且传递异常。
要为迭代器编写一个一个循环,C代码应该看起来像这样
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 */
}
此页内容是否对您有帮助
感谢反馈!