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