Объекты нарезки¶
-
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.