è¿ä»£å™¨å��议¶
è¿ä»£å™¨æœ‰ä¸¤ä¸ªå‡½æ•°ã€‚
-
int PyIter_Check(PyObject *o)¶
- 属于 稳定 ABI 自 3.8 版开始.
如果对象Return non-zero if the object o å�¯ä»¥è¢«å®‰å…¨æŠŠä¼ ç»™
PyIter_Next()则返回é�žé›¶å€¼ï¼Œå�¦åˆ™è¿”回0。 æ¤å‡½æ•°æ€»æ˜¯ä¼šæˆ�功执行。
-
int PyAIter_Check(PyObject *o)¶
- 属于 稳定 ABI 自 3.10 版开始.
如果对象 o �供了
AsyncIteratorå��议则返回é�žé›¶å€¼ï¼Œå�¦åˆ™è¿”回0。 æ¤å‡½æ•°æ€»æ˜¯ä¼šæˆ�功执行。在 3.10 ç‰ˆæœ¬åŠ å…¥.
-
PyObject *PyIter_Next(PyObject *o)¶
- 返回值:新的引用。 属于 稳定 ABI.
从è¿ä»£å™¨ o 返回下一个值。 对象必须å�¯è¢«
PyIter_Check()确认为è¿ä»£å™¨ï¼ˆéœ€è¦�调用方æ�¥è´Ÿè´£æ£€æŸ¥ï¼‰ã€‚ 如果没有剩余的值,则返回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 */
}
-
type PySendResult¶
用于代表
PyIter_Send()çš„ä¸�å�Œç»“果的枚举值。在 3.10 ç‰ˆæœ¬åŠ å…¥.
-
PySendResult PyIter_Send(PyObject *iter, PyObject *arg, PyObject **presult)¶
- 属于 稳定 ABI 自 3.10 版开始.
å°† arg 值å�‘é€�到è¿ä»£å™¨ iter。 返回:
PYGEN_RETURN,如果è¿ä»£å™¨è¿”回的è¯�。 返回值会通过 presult æ�¥è¿”回。PYGEN_NEXT,如果è¿ä»£å™¨ç”Ÿæˆ�值的è¯�。 生æˆ�的值会通过 presult æ�¥è¿”回。PYGEN_ERROR,如果è¿ä»£å™¨å¼•å�‘异常的è¯�。 presult 会被设为NULL。
在 3.10 ç‰ˆæœ¬åŠ å…¥.