Iterator-Protokoll

Es gibt zwei Funktionen, die speziell für die Arbeit mit Iteratoren bestimmt sind.

int PyIter_Check(PyObject *o)
Teil der Stable ABI seit Version 3.8.

Gibt ungleich Null zurück, wenn das Objekt o sicher an PyIter_NextItem() übergeben werden kann, und andernfalls 0. Diese Funktion schlägt niemals fehl.

int PyAIter_Check(PyObject *o)
Teil der Stable ABI seit Version 3.10.

Gibt ungleich Null zurück, wenn das Objekt o das Protokoll für AsyncIterator bereitstellt, und andernfalls 0. Diese Funktion schlägt niemals fehl.

Hinzugefügt in Version 3.10.

int PyIter_NextItem(PyObject *iter, PyObject **item)
Teil des Stable ABI seit Version 3.14.

Gibt 1 zurück und setzt item auf eine starke Referenz des nächsten Werts des Iterators iter bei Erfolg. Gibt 0 zurück und setzt item auf NULL, wenn keine Werte mehr vorhanden sind. Gibt -1 zurück, setzt item auf NULL und setzt eine Ausnahme bei einem Fehler.

Hinzugefügt in Version 3.14.

PyObject *PyIter_Next(PyObject *o)
Rückgabewert: Neue Referenz. Teil der Stabilen ABI.

Dies ist eine ältere Version von PyIter_NextItem(), die aus Gründen der Abwärtskompatibilität beibehalten wird. Bevorzugen Sie PyIter_NextItem().

Gibt den nächsten Wert aus dem Iterator o zurück. Das Objekt muss ein Iterator gemäß PyIter_Check() sein (es liegt in der Verantwortung des Aufrufers, dies zu überprüfen). Wenn keine Werte mehr vorhanden sind, wird NULL ohne gesetzte Ausnahme zurückgegeben. Wenn bei der Abfrage des Elements ein Fehler auftritt, wird NULL zurückgegeben und die Ausnahme weitergereicht.

type PySendResult

Der Enum-Wert, der verschiedene Ergebnisse von PyIter_Send() repräsentiert.

Hinzugefügt in Version 3.10.

PySendResult PyIter_Send(PyObject *iter, PyObject *arg, PyObject **presult)
Teil der Stable ABI seit Version 3.10.

Sendet den Wert arg in den Iterator iter. Gibt zurück

  • PYGEN_RETURN, wenn der Iterator zurückkehrt. Der Rückgabewert wird über presult zurückgegeben.

  • PYGEN_NEXT, wenn der Iterator yield. Der ge-yieldete Wert wird über presult zurückgegeben.

  • PYGEN_ERROR, wenn der Iterator eine Ausnahme ausgelöst hat. presult wird auf NULL gesetzt.

Hinzugefügt in Version 3.10.