Объекты срезов
-
PyTypeObject PySlice_Type -
Часть стабильного ABI.
Объект типа для объектов срезов. Это то же самое, что
sliceна уровне Python.
-
int PySlice_Check(PyObject *ob) -
Возвращает истинное значение, если ob является объектом среза; ob не должен быть
NULL. Эта функция всегда завершается успешно.
-
PyObject *PySlice_New(PyObject *start, PyObject *stop, PyObject *step) -
Возвращаемое значение: новая ссылка. Часть стабильного 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) -
Часть стабильного ABI.
Получает индексы начала, конца и шага из объекта среза 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) -
Часть стабильного 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) -
Часть стабильного ABI начиная с версии 3.7.
Извлекает элементы данных начала, конца и шага из объекта среза в виде целых чисел C. Без предупреждения уменьшает значения больше
PY_SSIZE_T_MAXдоPY_SSIZE_T_MAX, без предупреждения увеличивает значения начала и конца меньше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) -
Часть стабильного ABI начиная с версии 3.7.
Корректирует индексы начала и конца среза, предполагая, что длина последовательности равна указанному значению. Индексы, выходящие за границы, ограничиваются так же, как и при обработке обычных срезов.
Возвращает длину среза. Всегда завершается успешно. Не вызывает код Python.
Добавлено в версии 3.6.1.
Объект многоточия
-
PyTypeObject PyEllipsis_Type -
Часть стабильного ABI.
Тип объекта Python
Ellipsis. То же самое, чтоtypes.EllipsisTypeна уровне Python.
-
PyObject *Py_Ellipsis -
Объект Python
Ellipsis. У этого объекта нет методов. Как иPy_None, это бессмертный объект-одиночка.Изменено в версии 3.12:
Py_Ellipsisстал бессмертным.
© 2001–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/c-api/slice.html