Объекты нарезки

PyTypeObject PySlice_Type
Part of the Stable ABI.

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

int PySlice_Check(PyObject *ob)

Возвращает true, если ob является объектом среза; ob не должен быть NULL. Эта функция всегда успешна.

PyObject *PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
Return value: New reference. Part of the Stable ABI.

Возвращает новый объект среза с заданными значениями. Параметры 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)
Part of the Stable ABI.

Извлечь индексы start, stop и 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)
Part of the Stable ABI.

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

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

Примечание

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

if (PySlice_GetIndicesEx(slice, length, &start, &stop, &step, &slicelength) < 0) {
    // return error
}

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

if (PySlice_Unpack(slice, &start, &stop, &step) < 0) {
    // return error
}
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 (не включая) !PySlice_GetIndicesEx является устаревшей функцией.

int PySlice_Unpack(PyObject *slice, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
Part of the Stable ABI since version 3.7.

Извлеките члены данных start, stop и step из объекта slice в виде целых чисел C. Бесшумно уменьшите значения больше чем PY_SSIZE_T_MAX до PY_SSIZE_T_MAX, бесшумно увеличьте значения start и stop меньше чем PY_SSIZE_T_MIN до PY_SSIZE_T_MIN, и бесшумно увеличьте значения step меньше чем -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)
Part of the Stable ABI since version 3.7.

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

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

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

Объект эллипсиса

PyObject *Py_Ellipsis

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

Вернуться на верх