ਇਟਰੇਟਰ ਪ੍ਰੋਟੋਕੋਲ¶
ਇਟਰੇਟਰਾਂ ਨਾਲ ਕੰਮ ਕਰਨ ਲਈ ਖ਼ਾਸ ਤੌਰ 'ਤੇ ਦੋ ਫੰਕਸ਼ਨ ਹਨ।
-
int PyIter_Check(PyObject *o)¶
- Part of the Stable ABI since version 3.8.
ਜੇ ਆਬਜੈਕਟ o ਨੂੰ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ
PyIter_NextItem()ਵਿੱਚ ਪਾਸ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਤਾਂ ਗੈਰ-ਜ਼ੀਰੋ ਵਾਪਸ ਕਰੋ, ਨਹੀਂ ਤਾਂ0ਵਾਪਸ ਕਰੋ। ਇਹ ਫੰਕਸ਼ਨ ਹਮੇਸ਼ਾਂ ਸਫਲ ਹੁੰਦਾ ਹੈ।
-
int PyAIter_Check(PyObject *o)¶
- Part of the Stable ABI since version 3.10.
ਜੇ ਆਬਜੈਕਟ o
AsyncIteratorਪ੍ਰੋਟੋਕੋਲ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਤਾਂ ਗੈਰ-ਜ਼ੀਰੋ ਵਾਪਸ ਕਰੋ, ਨਹੀਂ ਤਾਂ0ਵਾਪਸ ਕਰੋ। ਇਹ ਫੰਕਸ਼ਨ ਹਮੇਸ਼ਾਂ ਸਫਲ ਹੁੰਦਾ ਹੈ।Added in version 3.10.
-
int PyIter_NextItem(PyObject *iter, PyObject **item)¶
- Part of the Stable ABI since version 3.14.
ਸਫਲ ਹੋਣ 'ਤੇ
1ਵਾਪਸ ਕਰੋ ਅਤੇ item ਨੂੰ ਇਟਰੇਟਰ iter ਦੇ ਅਗਲੇ ਮੁੱਲ ਲਈ ਇੱਕ strong reference 'ਤੇ ਸੈੱਟ ਕਰੋ। ਜੇ ਕੋਈ ਮੁੱਲ ਬਾਕੀ ਨਹੀਂ ਹੈ, ਤਾਂ0ਵਾਪਸ ਕਰੋ ਅਤੇ item ਨੂੰNULL'ਤੇ ਸੈੱਟ ਕਰੋ। ਗਲਤੀ ਹੋਣ 'ਤੇ-1ਵਾਪਸ ਕਰੋ, item ਨੂੰNULL'ਤੇ ਸੈੱਟ ਕਰੋ ਅਤੇ ਇੱਕ ਅਪਵਾਦ ਸੈੱਟ ਕਰੋ।Added in version 3.14.
-
PyObject *PyIter_Next(PyObject *o)¶
- Return value: New reference. Part of the Stable ABI.
ਇਹ
PyIter_NextItem()ਦਾ ਇੱਕ ਪੁਰਾਣਾ ਸੰਸਕਰਣ ਹੈ, ਜਿਸ ਨੂੰ ਪਿੱਛੇ ਵੱਲ ਅਨੁਕੂਲਤਾ ਲਈ ਰੱਖਿਆ ਗਿਆ ਹੈ।PyIter_NextItem()ਨੂੰ ਤਰਜੀਹ ਦਿਓ।ਇਟਰੇਟਰ o ਤੋਂ ਅਗਲਾ ਮੁੱਲ ਵਾਪਸ ਕਰੋ।
PyIter_Check()ਅਨੁਸਾਰ ਇਹ ਆਬਜੈਕਟ ਇੱਕ ਇਟਰੇਟਰ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ (ਇਸ ਦੀ ਜਾਂਚ ਕਰਨਾ ਕਾਲਰ ਦੀ ਜ਼ਿੰਮੇਵਾਰੀ ਹੈ)। ਜੇ ਕੋਈ ਮੁੱਲ ਬਾਕੀ ਨਹੀਂ ਹੈ, ਤਾਂ ਬਿਨਾਂ ਕਿਸੇ ਅਪਵਾਦ ਨੂੰ ਸੈੱਟ ਕੀਤੇNULLਵਾਪਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਜੇ ਆਈਟਮ ਪ੍ਰਾਪਤ ਕਰਦੇ ਸਮੇਂ ਕੋਈ ਗਲਤੀ ਆਉਂਦੀ ਹੈ, ਤਾਂNULLਵਾਪਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਅਪਵਾਦ ਅੱਗੇ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ।
-
type PySendResult¶
PyIter_Send()ਦੇ ਵੱਖ-ਵੱਖ ਨਤੀਜਿਆਂ ਨੂੰ ਦਰਸਾਉਣ ਲਈ ਵਰਤਿਆ ਜਾਣ ਵਾਲਾ enum ਮੁੱਲ।Added in version 3.10.
-
PySendResult PyIter_Send(PyObject *iter, PyObject *arg, PyObject **presult)¶
- Part of the Stable ABI since version 3.10.
arg ਮੁੱਲ ਨੂੰ ਇਟਰੇਟਰ iter ਵਿੱਚ ਭੇਜਦਾ ਹੈ। ਇਹ ਹੇਠਾਂ ਦਿੱਤੇ ਮੁੱਲਾਂ ਵਿੱਚੋਂ ਇੱਕ ਵਾਪਸ ਕਰਦਾ ਹੈ:
ਜੇ ਇਟਰੇਟਰ return ਕਰਦਾ ਹੈ ਤਾਂ
PYGEN_RETURN। ਵਾਪਸੀ ਮੁੱਲ presult ਰਾਹੀਂ ਵਾਪਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।ਜੇ ਇਟਰੇਟਰ yield ਕਰਦਾ ਹੈ ਤਾਂ
PYGEN_NEXT। yield ਕੀਤਾ ਗਿਆ ਮੁੱਲ presult ਰਾਹੀਂ ਵਾਪਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।ਜੇ ਇਟਰੇਟਰ ਇੱਕ ਅਪਵਾਦ ਪੈਦਾ ਕਰਦਾ ਹੈ ਤਾਂ
PYGEN_ERROR। presult ਨੂੰNULL'ਤੇ ਸੈੱਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
Added in version 3.10.