Spec-Zone.ru › Python 3.12

Объекты слайсов

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

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

int PySlice_Check(PyObject *ob)

Возвращает true, если 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.

Извлечение значений членов start, stop и step из объекта слайса как целочисленных значений 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)
Часть Стабильной ABI с версии 3.7.

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

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

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

Объект Эллипсис

PyObject *Py_Ellipsis

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

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

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

Spec-Zone.ru

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