Объекты Slice¶
-
PyTypeObject
PySlice_Type
¶ Тип объекта для слайс объектов. Это то же самое, что
slice
в Python слое.
-
int
PySlice_Check
(PyObject *ob)¶ Возвращает true, если ob является объектом слайса; ob не должно быть
NULL
.
-
PyObject*
PySlice_New
(PyObject *start, PyObject *stop, PyObject *step)¶ - Return value: New reference.
Возвращает новый слайс объект с заданным значением. 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)¶ Извлечение индексы начала, остановки и шага из 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)¶ Пригодная для использования замена для
PySlice_GetIndices()
. Извлечение индексов начала, остановки и шага из объекта слайса slice предполагая последовательность length длины, и сохраните длину слайса в slicelength. Выходящие за границы индексы обрезаются способом, согласующимся с обработкой нормальных срезов.Возвращает
0
при успехе и-1
при ошибке с набором исключений.Примечание
Эта функция считается небезопасной для последовательностей с изменяемым размером. Его ссылка должна быть заменена комбинацией
PySlice_Unpack()
иPySlice_AdjustIndices()
где:if (PySlice_GetIndicesEx(slice, length, &start, &stop, &step, &slicelength) < 0) { // возвращение ошибку }
заменяется на:
if (PySlice_Unpack(slice, &start, &stop, &step) < 0) { // возвращение ошибку } 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
(не включая): c:func:!PySlice_GetIndicesEx является устаревшей функцией.
-
int
PySlice_Unpack
(PyObject *slice, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)¶ Извлечение элементов данных start, stop и step из объекта слайса в виде целых чисел C. Незаметно уменьшайте значения больше
PY_SSIZE_T_MAX
доPY_SSIZE_T_MAX
, незаметно повышайте start и stop значения меньше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)¶ Скорректировать индексы start/end слайса, предполагая последовательность указанной длины. Выходящие за границы индексы обрезаются способом, согласующимся с обработкой нормальных слайсов.
Возвращает длину слайса. Всегда успешно. Не вызывает Python код.
Добавлено в версии 3.6.1.