Протокол итератора
Для работы с итераторами предусмотрены две специальные функции.
-
int PyIter_Check(PyObject *o) -
Часть Стабильного ABI начиная с версии 3.8.
Возвращает ненулевое значение, если объект o можно безопасно передать в
PyIter_NextItem(), и0в противном случае. Эта функция всегда завершается успешно.
-
int PyAIter_Check(PyObject *o) -
Часть Стабильного ABI начиная с версии 3.10.
Возвращает ненулевое значение, если объект o поддерживает протокол
AsyncIterator, и0в противном случае. Эта функция всегда завершается успешно.Добавлено в версии 3.10.
-
int PyIter_NextItem(PyObject *iter, PyObject **item) -
Часть Стабильного ABI начиная с версии 3.14.
При успешном выполнении возвращает
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.
-
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.
-
© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/c-api/iter.html