迭代器協議¶
有兩個專門用於處理迭代器的函式。
-
int PyIter_Check(PyObject *o)¶
- 自 3.8 版本以來,作為穩定 ABI 的一部分。
如果物件 o 可以安全地傳遞給
PyIter_NextItem()
,則返回非零值;否則返回0
。此函式總是成功的。
-
int PyAIter_Check(PyObject *o)¶
- 自 3.10 版本以來,作為 穩定 ABI 的一部分。
如果物件 o 提供了
AsyncIterator
協議,則返回非零值;否則返回0
。此函式總是成功的。在 3.10 版本加入。
-
int PyIter_NextItem(PyObject *iter, PyObject **item)¶
- 自 3.14 版本以來,作為 穩定 ABI 的一部分。
成功時返回
1
並將 item 設定為迭代器 iter 的下一個值的強引用。如果沒有剩餘的值,則返回0
並將 item 設定為NULL
。如果發生錯誤,則返回-1
,將 item 設定為NULL
並設定一個異常。在 3.14 版本加入。
-
PyObject *PyIter_Next(PyObject *o)¶
- 返回值: 新引用。 穩定ABI 的一部分。
這是
PyIter_NextItem()
的舊版本,為了向後相容而保留。請優先使用PyIter_NextItem()
。返回迭代器 o 的下一個值。根據
PyIter_Check()
,該物件必須是一個迭代器(由呼叫者負責檢查)。如果沒有剩餘的值,則返回NULL
且不設定異常。如果在獲取項時發生錯誤,則返回NULL
並傳遞異常。
-
type PySendResult¶
用於表示
PyIter_Send()
不同結果的列舉值。在 3.10 版本加入。