Объекты среза¶
-
PyTypeObject PySlice_Type¶
- Part of the Стабильный ABI.
Тип object для объектов slice. Это то же самое, что
slice
на уровне Python.
-
int PySlice_Check(PyObject *ob)¶
Возвращает значение true, если ob является объектом slice; ob не должно быть
NULL
. Эта функция всегда выполняется успешно.
-
PyObject *PySlice_New(PyObject *start, PyObject *stop, PyObject *step)¶
- Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.
Возвращает новый объект slice с заданными значениями. Параметры start, stop и step используются в качестве значений одноименных атрибутов объекта slice. Любым из значений может быть
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 Стабильный ABI.
Извлекает индексы start, stop и step из объекта slice срез, предполагая последовательность длины 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 Стабильный ABI.
Подходящая замена для
PySlice_GetIndices()
. Извлеките индексы start, stop и step из объекта 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
или выше : c:func:!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)¶
- Part of the Стабильный ABI since version 3.7.
Извлеките элементы данных start, stop и step из объекта slice в виде целых чисел на языке Си. Автоматически уменьшайте значения, превышающие
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)¶
- Part of the Стабильный ABI since version 3.7.
Отрегулируйте индексы начального и конечного срезов, используя последовательность заданной длины. Индексы, выходящие за рамки, обрезаются таким же образом, как и при обработке обычных срезов.
Возвращает длину фрагмента. Всегда выполняется успешно. Не вызывает код на Python.
Добавлено в версии 3.6.1.