پروتکل پیمایشگر¶
دو تابع بهطور خاص برای کار با پیمایشگرها وجود دارند.
-
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¶
مقدار enum که برای نمایش نتایج مختلف تابع
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.