> **Источник:** https://python-all.ru/3.3/c-api/slice.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# Объекты срезов

**[PyTypeObject](https://python-all.ru/3.3/c-api/type.html#PyTypeObject) `PySlice_Type`**

Объект типа для объектов срезов. То же самое, что [`slice`](https://python-all.ru/3.3/library/functions.html#slice) на уровне Python.

#### `int PySlice_Check(PyObject *ob)`

Возвращает true, если *ob* является объектом среза; *ob* не должен быть *NULL*.

#### `PyObject* PySlice_New(PyObject *start, PyObject *stop, PyObject *step)`

*Возвращаемое значение: новая ссылка.*

Возвращает новый объект среза с указанными значениями. Параметры *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)`

Извлекает индексы start, stop и step из объекта среза *slice*, предполагая последовательность длины *length*. Считает индексы, превышающие *length*, ошибками.

Возвращает 0 в случае успеха и -1 при ошибке без установки исключения (за исключением случая, когда один из индексов не был [`None`](https://python-all.ru/3.3/library/constants.html#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()`](https://python-all.ru/3.3/c-api/slice.html#PySlice_GetIndices). Извлекает значения start, stop и step из объекта среза *slice* при условии последовательности длины *length* и сохраняет длину среза в *slicelength*. Индексы за пределами диапазона обрезаются способом, соответствующим обработке обычных срезов.

Возвращает 0 в случае успеха и -1 при ошибке с установкой исключения.

Изменено в версии 3.2: Тип параметра *slice* ранее был `PySliceObject*`.
