Iteratorprotokoll

Det finns två funktioner som är särskilt avsedda för att arbeta med iteratorer.

int PyIter_Check(PyObject *o)
En del av Stabil ABI sedan version 3.8.

Returnerar icke-noll om objektet o säkert kan skickas till PyIter_NextItem() och 0 annars. Denna funktion lyckas alltid.

int PyAIter_Check(PyObject *o)
En del av Stabil ABI sedan version 3.10.

Returnerar icke-noll om objektet o tillhandahåller protokollet AsyncIterator, och 0 annars. Denna funktion lyckas alltid.

Tillagd i version 3.10.

int PyIter_NextItem(PyObject *iter, PyObject **item)
En del av Stabil ABI sedan version 3.14.

Returnerar 1 och sätter item till en strong reference av nästa värde i iteratorn iter vid framgång. Returnerar 0 och sätter item till NULL om det inte finns några återstående värden. Returnerar -1, sätter item till NULL och sätter ett undantag vid error.

Tillagd i version 3.14.

PyObject *PyIter_Next(PyObject *o)
Returnera värde: Ny referens. En del av Stabil ABI.

Detta är en äldre version av PyIter_NextItem(), som behålls för bakåtkompatibilitet. Föredrar PyIter_NextItem().

Returnerar nästa värde från iteratorn o. Objektet måste vara en iterator enligt PyIter_Check() (det är upp till den som anropar att kontrollera detta). Om det inte finns några återstående värden returneras NULL utan att något undantag anges. Om ett fel inträffar när objektet hämtas, returneras NULL och undantaget skickas vidare.

type PySendResult

Det enumvärde som används för att representera olika resultat av PyIter_Send().

Tillagd i version 3.10.

PySendResult PyIter_Send(PyObject *iter, PyObject *arg, PyObject **presult)
En del av Stabil ABI sedan version 3.10.

Skickar arg-värdet till iteratorn iter. Returnerar:

  • PYGEN_RETURN om iteratorn returnerar. Returvärdet returneras via presult.

  • PYGEN_NEXT om iteratorn ger något. Värdet returneras via presult.

  • PYGEN_ERROR om iteratorn har orsakat ett undantag. presult är satt till NULL.

Tillagd i version 3.10.