Đối tượng cắt lát

PyTypeObject PySlice_Type
Một phần của ABI ổn định.

Đối tượng kiểu cho các đối tượng lát cắt. Điều này giống như slice trong lớp Python.

int PySlice_Check(PyObject *ob)

Trả về true nếu ob là một đối tượng lát cắt; ob không được là NULL. Chức năng này luôn thành công.

PyObject *PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về một đối tượng lát cắt mới với các giá trị đã cho. Các tham số start, stopstep được sử dụng làm giá trị của các thuộc tính đối tượng lát cắt có cùng tên. Bất kỳ giá trị nào cũng có thể là NULL, trong trường hợp đó, None sẽ được sử dụng cho thuộc tính tương ứng.

Trả về NULL với một ngoại lệ được đặt nếu đối tượng mới không thể được phân bổ.

int PySlice_GetIndices(PyObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
Một phần của ABI ổn định.

Truy xuất các chỉ số bắt đầu, dừng và bước từ đối tượng lát cắt slice, giả sử một chuỗi có độ dài length. Xử lý các chỉ số lớn hơn length là lỗi.

Trả về 0 nếu thành công và -1 có lỗi mà không đặt ngoại lệ (trừ khi một trong các chỉ số không phải là None và không thể chuyển đổi thành số nguyên, trong trường hợp đó -1 được trả về cùng với một bộ ngoại lệ).

Có lẽ bạn không muốn sử dụng chức năng này.

Thay đổi trong phiên bản 3.2: Loại tham số cho tham số slice trước đây là PySliceObject*.

int PySlice_GetIndicesEx(PyObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength)
Một phần của ABI ổn định.

Có thể thay thế cho PySlice_GetIndices(). Truy xuất các chỉ số bắt đầu, dừng và bước từ đối tượng lát cắt slice giả sử một chuỗi có độ dài length và lưu trữ độ dài của lát cắt trong slicelength. Các chỉ số ngoài giới hạn được cắt bớt theo cách phù hợp với việc xử lý các lát thông thường.

Trả về 0 nếu thành công và -1 nếu có lỗi với một bộ ngoại lệ.

Ghi chú

Chức năng này được coi là không an toàn đối với các chuỗi có thể thay đổi kích thước. Lời gọi của nó nên được thay thế bằng sự kết hợp của PySlice_Unpack()PySlice_AdjustIndices() trong đó

if (PySlice_GetIndicesEx(lát, chiều dài, &bắt đầu, &dừng, &bước, &slicelength) < 0) {
    // trả về lỗi
}

được thay thế bởi

if (PySlice_Unpack(lát, &bắt đầu, &dừng, &bước) < 0) {
    // trả về lỗi
}
slicelength = PySlice_AdjustIndices(length, &start, &stop, step);

Thay đổi trong phiên bản 3.2: Loại tham số cho tham số slice trước đây là PySliceObject*.

Thay đổi trong phiên bản 3.6.1: Nếu Py_LIMITED_API không được đặt hoặc đặt thành giá trị giữa 0x030504000x03060000 (không bao gồm) hoặc 0x03060100 trở lên thì PySlice_GetIndicesEx() được triển khai dưới dạng macro sử dụng PySlice_Unpack()PySlice_AdjustIndices(). Các đối số start, stopstep được đánh giá nhiều lần.

Sắp loại bỏ từ phiên bản 3.6.1: Nếu Py_LIMITED_API được đặt thành giá trị nhỏ hơn 0x03050400 hoặc giữa 0x030600000x03060100 (không bao gồm) thì PySlice_GetIndicesEx() là một hàm không được dùng nữa.

int PySlice_Unpack(PyObject *slice, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
Một phần của ABI ổn định kể từ phiên bản 3.7.

Trích xuất các thành viên dữ liệu bắt đầu, dừng và bước từ một đối tượng lát cắt dưới dạng số nguyên C. Giảm âm thầm các giá trị lớn hơn PY_SSIZE_T_MAX xuống PY_SSIZE_T_MAX, âm thầm tăng giá trị bắt đầu và dừng nhỏ hơn PY_SSIZE_T_MIN lên PY_SSIZE_T_MIN và âm thầm tăng các giá trị bước nhỏ hơn -PY_SSIZE_T_MAX lên -PY_SSIZE_T_MAX.

Trả về -1 với ngoại lệ được đặt là lỗi, 0 thành công.

Added in version 3.6.1.

Py_ssize_t PySlice_AdjustIndices(Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t step)
Một phần của ABI ổn định kể từ phiên bản 3.7.

Điều chỉnh các chỉ số lát bắt đầu/kết thúc giả sử một chuỗi có độ dài được chỉ định. Các chỉ số ngoài giới hạn được cắt bớt theo cách phù hợp với việc xử lý các lát thông thường.

Trả về chiều dài của lát cắt. Luôn thành công. Không gọi mã Python.

Added in version 3.6.1.

Đối tượng Ellipsis

PyTypeObject PyEllipsis_Type
Một phần của ABI ổn định.

Loại đối tượng Python Ellipsis. Tương tự như types.EllipsisType trong lớp Python.

PyObject *Py_Ellipsis

Đối tượng Python Ellipsis. Đối tượng này không có phương pháp. Giống như Py_None, nó là một đối tượng đơn lẻ immortal.

Thay đổi trong phiên bản 3.12: Py_Ellipsis là bất tử.