Объекты Slice

PyTypeObject PySlice_Type

Тип объекта для слайс объектов. Это то же самое, что slice в Python слое.

int PySlice_Check(PyObject *ob)

Возвращает true, если ob является объектом слайса; ob не должно быть NULL.

PyObject* PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
Return value: New reference.

Возвращает новый слайс объект с заданным значением. start, stop и step - используемые параметры, поскольку значения части возражают атрибуты тех же имен. Любое из значений может быть NULL, и в этом случае None будет использоваться для соответствующего атрибута. Возвращает NULL, если новый объект не удалось аллоцировать.

int PySlice_GetIndices(PyObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)

Извлечение индексы начала, остановки и шага из slice объекта слайса, предполагая последовательность length длины. Обрабатывает индексы, превышающие length, как ошибки.

Возвращает 0 при успехе и -1 при ошибке без множества исключений (если только один из индексов не был None и не был преобразован в целое число, в этом случае -1 возвращается с множеством исключений).

Вероятно, вы не хотите использовать эту функцию.

Изменено в версии 3.2: Ранее тип параметра slice был 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)

Пригодная для использования замена для PySlice_GetIndices(). Извлечение индексов начала, остановки и шага из объекта слайса slice предполагая последовательность length длины, и сохраните длину слайса в slicelength. Выходящие за границы индексы обрезаются способом, согласующимся с обработкой нормальных срезов.

Возвращает 0 при успехе и -1 при ошибке с набором исключений.

Примечание

Эта функция считается небезопасной для последовательностей с изменяемым размером. Его ссылка должна быть заменена комбинацией PySlice_Unpack() и PySlice_AdjustIndices() где:

if (PySlice_GetIndicesEx(slice, length, &start, &stop, &step, &slicelength) < 0) {
    // возвращение ошибку
}

заменяется на:

if (PySlice_Unpack(slice, &start, &stop, &step) < 0) {
    // возвращение ошибку
}
slicelength = PySlice_AdjustIndices(length, &start, &stop, step);

Изменено в версии 3.2: Ранее тип параметра slice был PySliceObject*.

Изменено в версии 3.6.1: Если Py_LIMITED_API не установлен или не установлен в значение между 0x03050400 и 0x03060000 (не включая) или 0x03060100 или больше PySlice_GetIndicesEx() реализуется как макро используя PySlice_Unpack() и PySlice_AdjustIndices(). Аргументы start, stop и step оцениваются несколько раз.

Не рекомендуется, начиная с версии 3.6.1: Если Py_LIMITED_API установлено в значение меньше 0x03050400 или между 0x03060000 и 0x03060100 (не включая): c:func:!PySlice_GetIndicesEx является устаревшей функцией.

int PySlice_Unpack(PyObject *slice, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)

Извлечение элементов данных start, stop и step из объекта слайса в виде целых чисел C. Незаметно уменьшайте значения больше PY_SSIZE_T_MAX до PY_SSIZE_T_MAX, незаметно повышайте start и stop значения меньше PY_SSIZE_T_MIN до PY_SSIZE_T_MIN и бесшумно повышайте значения меньше -PY_SSIZE_T_MAX до -PY_SSIZE_T_MAX.

Возвращает -1 при ошибке, 0 при успехе.

Добавлено в версии 3.6.1.

Py_ssize_t PySlice_AdjustIndices(Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t step)

Скорректировать индексы start/end слайса, предполагая последовательность указанной длины. Выходящие за границы индексы обрезаются способом, согласующимся с обработкой нормальных слайсов.

Возвращает длину слайса. Всегда успешно. Не вызывает Python код.

Добавлено в версии 3.6.1.

Объект Ellipsis

PyObject *Py_Ellipsis

Объект Python Ellipsis. Объект не имеет методов. Он должен рассматриваться так же, как и любой другой объект в отношении количества ссылок. Как и Py_None, это объект сиглетон.