Spec-Zone.ru › Python 3.13

Объекты срезов

PyTypeObject PySlice_Type
Часть стабильного ABI.

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

int PySlice_Check(PyObject *ob)

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

PyObject *PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
Возвращаемое значение: новая ссылка. Часть стабильного 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)
Часть стабильного ABI.

Получает индексы начала, конца и шага из объекта среза 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)
Часть стабильного 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)
Часть стабильного ABI начиная с версии 3.7.

Извлекает элементы данных начала, конца и шага из объекта среза в виде целых чисел C. Без предупреждения уменьшает значения больше PY_SSIZE_T_MAX до PY_SSIZE_T_MAX, без предупреждения увеличивает значения начала и конца меньше 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)
Часть стабильного ABI начиная с версии 3.7.

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

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

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

Объект многоточия

PyTypeObject PyEllipsis_Type
Часть стабильного ABI.

Тип объекта Python Ellipsis. То же самое, что types.EllipsisType на уровне Python.

PyObject *Py_Ellipsis

Объект Python Ellipsis. У этого объекта нет методов. Как и Py_None, это бессмертный объект-одиночка.

Изменено в версии 3.12: Py_Ellipsis стал бессмертным.

© 2001–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/c-api/slice.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API