Документация Python неофициальный перевод

slice.md

54 строк · 4.8 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/2.6/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.6/c-api/type.html#PyTypeObject) `PySlice_Type`**1011Объект типа для объектов срезов. Он совпадает с `slice` и `types.SliceType`.1213**int `PySlice_Check`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*ob*)**1415Возвращает true, если1617*ob*1819является объектом среза;2021*ob*2223не должен быть2425*NULL*2627.2829**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PySlice_New`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*start*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*stop*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*step*)**3031*Возвращаемое значение: новая ссылка.*3233Возвращает новый объект среза с указанными значениями. Параметры *start*, *stop* и *step* используются как значения одноимённых атрибутов объекта среза. Любое из значений может быть *NULL*, и в этом случае для соответствующего атрибута будет использовано `None`. Возвращает *NULL*, если не удалось выделить память для нового объекта.3435**int `PySlice_GetIndices`(PySliceObject *\*slice*, Py\_ssize\_t *length*, Py\_ssize\_t *\*start*, Py\_ssize\_t *\*stop*, Py\_ssize\_t *\*step*)**3637Извлекает индексы start, stop и step из объекта среза *slice*, предполагая последовательность длины *length*. Считает индексы, превышающие *length*, ошибками.3839Возвращает 0 в случае успеха и -1 при ошибке без установки исключения (за исключением случая, когда один из индексов не был [`None`](https://python-all.ru/2.6/library/constants.html#None) и не удалось преобразовать его в целое число; в этом случае возвращается -1 с установкой исключения).4041Вероятно, эту функцию использовать не стоит. Если вы хотите использовать объекты срезов в версиях Python до 2.3, скорее всего, лучше включить исходный код [`PySlice_GetIndicesEx()`](https://python-all.ru/2.6/c-api/slice.html#PySlice_GetIndicesEx), соответствующим образом переименовав его, в исходный код расширения.4243Изменено в версии 2.5: В этой функции использовался тип `int` для *length* и тип `int *` для *start*, *stop* и *step*. Это может потребовать изменений в коде для корректной поддержки 64-битных систем.4445**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*)**4647Подходящая замена для [`PySlice_GetIndices()`](https://python-all.ru/2.6/c-api/slice.html#PySlice_GetIndices). Извлекает значения start, stop и step из объекта среза *slice* при условии последовательности длины *length* и сохраняет длину среза в *slicelength*. Индексы за пределами диапазона обрезаются способом, соответствующим обработке обычных срезов.4849Возвращает 0 в случае успеха и -1 при ошибке с установкой исключения.5051Новое в версии 2.3.5253Изменено в версии 2.5: В этой функции использовался тип `int` для *length* и тип `int *` для *start*, *stop*, *step* и *slicelength*. Это может потребовать изменений в коде для корректной поддержки 64-битных систем.54