Objetos Slice

PyTypeObject PySlice_Type

Tipo de objeto para objetos fatia. Isso é o mesmo que slice na camada Python.

int PySlice_Check(PyObject *ob)

Retorna true se ob for um objeto fatia; ob não deve ser NULL. Esta função sempre tem sucesso.

PyObject* PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
Return value: New reference.

Retorna um novo objeto fatia com os valores fornecidos. Os parâmetros start, stop e step são usados como os valores dos atributos do objeto fatia com os mesmos nomes. Qualquer um dos valores pode ser NULL, caso em que None será usado para o atributo correspondente. Retorna NULL 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 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 fosse None 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 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() e PySlice_AdjustIndices() sendo

if (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 entre 0x03050400 e 0x03060000 (não incluso) ou 0x03060100 ou mais alto, PySlice_GetIndicesEx() é implementado como uma macro usando PySlice_Unpack() e PySlice_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 que 0x03050400 ou entre 0x03060000 e 0x03060100 (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 fatia como C inteiros. Reduz silenciosamente os valores maiores do que PY_SSIZE_T_MAX para PY_SSIZE_T_MAX, aumenta silenciosamente os valores de início e parada menores que PY_SSIZE_T_MIN para PY_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.

Objeto Ellipsis

PyObject *Py_Ellipsis

O objeto Python Ellipsis. Este objeto não possui métodos. Ele precisa ser tratado como qualquer outro objeto no que diz respeito às contagens de referências. Como Py_None, é um objeto singleton.