Giao thức lặp¶
Có hai hàm đặc biệt để làm việc với các trình vòng lặp.
-
int PyIter_Check(PyObject *o)¶
- Một phần của ABI ổn định kể từ phiên bản 3.8.
Trả về giá trị khác 0 nếu đối tượng o có thể được chuyển an toàn tới
PyIter_NextItem()và0nếu không. Chức năng này luôn thành công.
-
int PyAIter_Check(PyObject *o)¶
- Một phần của ABI ổn định kể từ phiên bản 3.10.
Trả về giá trị khác 0 nếu đối tượng o cung cấp giao thức
AsyncIteratorvà0nếu ngược lại. Chức năng này luôn thành công.Added in version 3.10.
-
int PyIter_NextItem(PyObject *iter, PyObject **item)¶
- Một phần của ABI ổn định kể từ phiên bản 3.14.
Trả về
1và đặt item thành strong reference của giá trị tiếp theo của iterator iter khi thành công. Trả về0và đặt item thànhNULLnếu không còn giá trị nào. Trả về-1, đặt item thànhNULLvà đặt một ngoại lệ khi có lỗi.Added in version 3.14.
-
PyObject *PyIter_Next(PyObject *o)¶
- Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.
Đây là phiên bản cũ hơn của
PyIter_NextItem(), được giữ lại để tương thích ngược. ThíchPyIter_NextItem()hơn.Trả về giá trị tiếp theo từ iterator o. Đối tượng phải là một trình vòng lặp theo
PyIter_Check()(người gọi có thể kiểm tra điều này). Nếu không còn giá trị nào, trả vềNULLmà không đặt ngoại lệ. Nếu xảy ra lỗi trong khi truy xuất mục, trả vềNULLvà chuyển ngoại lệ.
-
type PySendResult¶
Giá trị enum được sử dụng để thể hiện các kết quả khác nhau của
PyIter_Send().Added in version 3.10.
-
PySendResult PyIter_Send(PyObject *iter, PyObject *arg, PyObject **presult)¶
- Một phần của ABI ổn định kể từ phiên bản 3.10.
Gửi giá trị arg vào iterator iter. Trả về:
PYGEN_RETURNnếu iterator trả về. Giá trị trả về được trả về thông qua presult.PYGEN_NEXTnếu iterator mang lại kết quả. Giá trị mang lại được trả về thông qua presult.PYGEN_ERRORnếu iterator có ngoại lệ. presult được đặt thànhNULL.
Added in version 3.10.