Объекты 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.
