slice.md
1> **Источник:** https://python-all.ru/2.7/c-api/slice.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Объекты срезов89**[PyTypeObject](https://python-all.ru/2.7/c-api/type.html#c.PyTypeObject) `PySlice_Type`**1011Объект типа для объектов срезов. Он идентичен `slice` и `types.SliceType`.1213#### `int PySlice_Check(PyObject *ob)`1415Возвращает true, если *ob* является объектом среза; *ob* не должен быть *NULL*.1617#### `PyObject* PySlice_New(PyObject *start, PyObject *stop, PyObject *step)`1819*Возвращаемое значение: новая ссылка.*2021Возвращает новый объект среза с указанными значениями. Параметры *start*, *stop* и *step* используются как значения одноимённых атрибутов объекта среза. Любое из значений может быть *NULL*; в этом случае для соответствующего атрибута будет использовано `None`. Возвращает *NULL*, если не удалось выделить память под новый объект.2223#### `int PySlice_GetIndices(PySliceObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)`2425Извлекает индексы start, stop и step из объекта среза *slice*, предполагая последовательность длины *length*. Считает индексы, превышающие *length*, ошибками.2627Возвращает `0` при успехе и `-1` при ошибке без установленного исключения (если только один из индексов не был [`None`](https://python-all.ru/2.7/library/constants.html#None) и не удалось преобразовать его в целое число, в этом случае возвращается `-1` с установленным исключением).2829Вероятно, вам не следует использовать эту функцию. Если вы хотите использовать объекты срезов в версиях Python до 2.3, вероятно, стоит включить исходный код [`PySlice_GetIndicesEx()`](https://python-all.ru/2.7/c-api/slice.html#c.PySlice_GetIndicesEx), переименовав его соответствующим образом, в исходный код вашего расширения.3031Изменено в версии 2.5: Эта функция использовала тип `int` для *length* и `int *` тип для *start*, *stop* и *step*. Это может потребовать изменений в вашем коде для корректной поддержки 64-разрядных систем.3233#### `int PySlice_GetIndicesEx(PySliceObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength)`3435Пригодная замена для [`PySlice_GetIndices()`](https://python-all.ru/2.7/c-api/slice.html#c.PySlice_GetIndices). Извлекает индексы start, stop и step из объекта среза *slice*, предполагая последовательность длины *length*, и сохраняет длину среза в *slicelength*. Выходящие за границы индексы обрезаются в соответствии с обработкой обычных срезов.3637Возвращает `0` при успехе и `-1` при ошибке с установленным исключением.3839Новое в версии 2.3.4041Изменено в версии 2.5: Эта функция использовала тип `int` для *length* и `int *` тип для *start*, *stop*, *step* и *slicelength*. Это может потребовать изменений в вашем коде для корректной поддержки 64-разрядных систем.4243# Объект Ellipsis4445**[PyObject](https://python-all.ru/2.7/c-api/structures.html#c.PyObject) \*`Py_Ellipsis`**4647Объект Python `Ellipsis`. У этого объекта нет методов. С точки зрения подсчёта ссылок с ним нужно обращаться как с любым другим объектом. Как и [`Py_None`](https://python-all.ru/2.7/c-api/none.html#c.Py_None), это объект-одиночка.48