Objetos Slice¶
-
PyTypeObject
PySlice_Type
¶ Tipo de objeto para fatiar objetos. Isso é o mesmo que :class:`slice na camada Python.
-
PyObject*
PySlice_New
(PyObject *start, PyObject *stop, PyObject *step)¶ - Return value: New reference.
Retorna um novo objeto de fatia com os valores fornecidos. Os parâmetros start, stop e step são usados como os valores dos atributos do objeto de fatia com os mesmos nomes. Qualquer um dos valores pode ser
NULL
, caso em queNone
será usado para o atributo correspondente. RetornaNULL
se o novo objeto não puder ser alocado.
-
int
PySlice_GetIndices
(PyObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)¶ Recupera os índices de início, parada e intermediário do objeto de fatia slice, presumindo uma sequência de comprimento length. Trata índices maiores que length como erros.
Retorna
0
em caso de sucesso e-1
em caso de erro sem exceção definida (a menos que um dos índices não fosseNone
e falhou ao ser convertido para um inteiro, neste caso-1
é retornado com uma exceção definida).Você provavelmente não deseja usar esta função.
Alterado na versão 3.2: O tipo de parâmetro para o parâmetro slice era antes de
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)¶ Substituição utilizável para
PySlice_GetIndices()
. Recupera os índices de início, parada e intermediário do objeto de fatia slice presumindo uma sequência de comprimento length e armazena o comprimento da fatia em slicelength. Índices fora dos limites são cortados de maneira consistente com o tratamento de fatias normais.Retorna
0
em caso de sucesso e-1
em caso de erro com exceção definida.Nota
Esta função não é considerada segura para sequências redimensionáveis. Sua invocação deve ser substituída por uma combinação de
PySlice_Unpack()
ePySlice_AdjustIndices()
sendoif (PySlice_GetIndicesEx(slice, length, &start, &stop, &step, &slicelength) < 0) { // return error }
substituído por
if (PySlice_Unpack(slice, &start, &stop, &step) < 0) { // return error } slicelength = PySlice_AdjustIndices(length, &start, &stop, step);
Alterado na versão 3.2: O tipo de parâmetro para o parâmetro slice era antes de
PySliceObject*
.Alterado na versão 3.6.1: Se
Py_LIMITED_API
não estiver definido ou estiver definido com um valor entre0x03050400
e0x03060000
(não incluso) ou0x03060100
ou mais alto,PySlice_GetIndicesEx()
é implementado como uma macro usandoPySlice_Unpack()
ePySlice_AdjustIndices()
. Os argumentos start, stop e step são avaliados mais de uma vez.Obsoleto desde a versão 3.6.1: Se
Py_LIMITED_API
estiver definido para um valor menor que0x03050400
ou entre0x03060000
e0x03060100
(não incluso),PySlice_GetIndicesEx()
é uma função descontinuada.
-
int
PySlice_Unpack
(PyObject *slice, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)¶ Extrai os membros de dados de início, parada e intermediário de um objeto de fatia como C inteiros. Reduz silenciosamente os valores maiores do que
PY_SSIZE_T_MAX
paraPY_SSIZE_T_MAX
, aumenta silenciosamente os valores de início e parada menores quePY_SSIZE_T_MIN
paraPY_SSIZE_T_MIN
, e silenciosamente aumenta os valores de intermediário menores que-PY_SSIZE_T_MAX
para-PY_SSIZE_T_MAX
.Retorna
-1
em caso de erro,0
em caso de sucesso.Novo na versão 3.6.1.
-
Py_ssize_t
PySlice_AdjustIndices
(Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t step)¶ Ajusta os índices de fatias inicial/final presumindo uma sequência do comprimento especificado. Índices fora dos limites são cortados de maneira consistente com o tratamento de fatias normais.
Retorna o comprimento da fatia. Sempre bem-sucedido. Não chama o código Python.
Novo na versão 3.6.1.