Содержание страницы
Объекты срезов¶Slice Objects
-
PyTypeObject PySlice_Type¶
- Часть Stable ABI.
Объект типа для объектов среза. Это то же самое, что
sliceна уровне Python.
-
int PySlice_Check(PyObject *ob)¶
Возвращает истину, если ob является объектом среза; ob не должен быть
NULL. Эта функция всегда завершается успешно.
-
PyObject *PySlice_New(PyObject *start, PyObject *stop, PyObject *step)¶
- Возвращаемое значение: новая ссылка. Часть 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)¶
- Часть 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)¶
- Часть Stable ABI.
Пригодная замена для
PySlice_GetIndices(). Извлекает индексы start, stop и step из объекта среза slice, предполагая последовательность длины length, и сохраняет длину среза в slicelength. Выходящие за границы индексы обрезаются в соответствии с обработкой обычных срезов.Возвращает
0при успехе и-1при ошибке с установленным исключением.Примечание
Эта функция считается небезопасной для последовательностей изменяемого размера. Её вызов следует заменить комбинацией
PySlice_Unpack()иPySlice_AdjustIndices(), гдеif (PySlice_GetIndicesEx(slice, length, &start, &stop, &step, &slicelength) < 0) { // вернуть ошибку }
заменяется на
if (PySlice_Unpack(slice, &start, &stop, &step) < 0) { // вернуть ошибку } 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)¶
- Часть Stable ABI начиная с версии 3.7.
Извлекает элементы данных start, stop и step из объекта среза как целые числа 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)¶
- Часть Stable ABI начиная с версии 3.7.
Корректирует индексы начала/конца среза для последовательности указанной длины. Выходящие за границы индексы обрезаются в соответствии с обработкой обычных срезов.
Возвращает длину среза. Всегда завершается успешно. Не вызывает код Python .
Добавлено в версии 3.6.1.
Объект Ellipsis¶Ellipsis Object
-
PyTypeObject PyEllipsis_Type¶
- Часть Stable ABI.
Тип объекта Python
Ellipsis. То же, чтоtypes.EllipsisTypeна уровне Python.
-
PyObject *Py_Ellipsis¶
Объект Python
Ellipsis. У этого объекта нет методов. ПодобноPy_None, это бессмертный объект-одиночка.Изменено в версии 3.12:
Py_Ellipsisявляется бессмертным.