Objeto tupla¶
-
PyTypeObject
PyTuple_Type
¶ Esta instância de
PyTypeObject
representa o tipo tupla de Python; é o mesmo objeto quetuple
na camada Python.
-
int
PyTuple_Check
(PyObject *p)¶ Retorna verdadeiro se p é um objeto tupla ou uma instância de um subtipo do tipo tupla. Esta função sempre tem sucesso.
-
int
PyTuple_CheckExact
(PyObject *p)¶ Retorna verdadeiro se p é um objeto tupla, mas não uma instância de um subtipo do tipo tupla. Esta função sempre tem sucesso.
-
PyObject*
PyTuple_New
(Py_ssize_t len)¶ - Return value: New reference.
Retorna um novo objeto tupla de tamanho len, ou
NULL
em caso de falha.
-
PyObject*
PyTuple_Pack
(Py_ssize_t n, ...)¶ - Return value: New reference.
Retorna um novo objeto tupla de tamanho n, ou
NULL
em caso de falha. Os valores da tupla são inicializados para os n argumentos C subsequentes apontando para objetos Python.`PyTuple_Pack(2, a, b)
é equivalente aPy_BuildValue("(OO)", a, b)
.
-
Py_ssize_t
PyTuple_Size
(PyObject *p)¶ Pega um ponteiro para um objeto tupla e retorna o tamanho dessa tupla.
-
Py_ssize_t
PyTuple_GET_SIZE
(PyObject *p)¶ Retorna o tamanho da tupla p, que deve ser diferente de
NULL
e apontar para uma tupla; nenhuma verificação de erro é executada.
-
PyObject*
PyTuple_GetItem
(PyObject *p, Py_ssize_t pos)¶ - Return value: Borrowed reference.
Retorna o objeto na posição pos na tupla apontada por p. Se pos estiver fora dos limites, retorna
NULL
e define uma exceçãoIndexError
.
-
PyObject*
PyTuple_GET_ITEM
(PyObject *p, Py_ssize_t pos)¶ - Return value: Borrowed reference.
Como
PyTuple_GetItem()
, mas faz nenhuma verificação de seus argumentos.
-
PyObject*
PyTuple_GetSlice
(PyObject *p, Py_ssize_t low, Py_ssize_t high)¶ - Return value: New reference.
Retorna a fatia da tupla apontada por p entre low (baixo) e high (alto), ou
NULL
em caso de falha. Este é o equivalente da expressão Pythonp[low:high]
. A indexação do final da lista não é suportada.
-
int
PyTuple_SetItem
(PyObject *p, Py_ssize_t pos, PyObject *o)¶ Insere uma referência ao objeto o na posição pos da tupla apontada por p. Retorna
0
em caso de sucesso. Se pos estiver fora dos limites, retorne-1
e define uma exceçãoIndexError
.Nota
Esta função “rouba” uma referência a o e descarta uma referência a um item já na tupla na posição afetada.
-
void
PyTuple_SET_ITEM
(PyObject *p, Py_ssize_t pos, PyObject *o)¶ Como
PyTuple_SetItem()
, mas não verifica erros e deve apenas ser usado para preencher novas tuplas.Nota
Esta macro “rouba” uma referência para o e, ao contrário de
PyTuple_SetItem()
, não descarta uma referência para nenhum item que esteja sendo substituído; qualquer referência na tupla na posição pos será perdida.
-
int
_PyTuple_Resize
(PyObject **p, Py_ssize_t newsize)¶ Pode ser usado para redimensionar uma tupla. newsize será o novo comprimento da tupla. Como as tuplas são supostamente imutáveis, isso só deve ser usado se houver apenas uma referência ao objeto. Não use isto se a tupla já for conhecida por alguma outra parte do código. A tupla sempre aumentará ou diminuirá no final. Pense nisso como destruir a tupla antiga e criar uma nova, mas com mais eficiência. Retorna
0
em caso de sucesso. O código do cliente nunca deve presumir que o valor resultante de*p
será o mesmo de antes de chamar esta função. Se o objeto referenciado por*p
for substituído, o*p
original será destruído. Em caso de falha, retorna-1
e define*p
paraNULL
, e levantaMemoryError
ouSystemError
.
Objetos sequência de estrutura¶
Objetos sequência de estrutura são o equivalente em C dos objetos namedtuple()
, ou seja, uma sequência cujos itens também podem ser acessados por meio de atributos. Para criar uma sequência de estrutura, você primeiro precisa criar um tipo de sequência de estrutura específico.
-
PyTypeObject*
PyStructSequence_NewType
(PyStructSequence_Desc *desc)¶ - Return value: New reference.
Cria um novo tipo de sequência de estrutura a partir dos dados em desc, descrito abaixo. Instâncias do tipo resultante podem ser criadas com
PyStructSequence_New()
.
-
void
PyStructSequence_InitType
(PyTypeObject *type, PyStructSequence_Desc *desc)¶ Inicializa um tipo de sequência de estrutura type de desc no lugar.
-
int
PyStructSequence_InitType2
(PyTypeObject *type, PyStructSequence_Desc *desc)¶ O mesmo que
PyStructSequence_InitType
, mas retorna0
em caso de sucesso e-1
em caso de falha.Novo na versão 3.4.
-
PyStructSequence_Desc
¶ Contém as metainformações de um tipo de sequência de estrutura a ser criado.
Campo
Tipo em C
Significado
name
const char *
nome do tipo sequência de estrutura
doc
const char *
ponteiro para docstring para o tipo ou
NULL
para omitirfields
PyStructSequence_Field *
ponteiro para um vetor terminado em
NULL
com nomes de campos do novo tipon_in_sequence
int
número de campos visíveis para o lado Python (se usado como tupla)
-
PyStructSequence_Field
¶ Descreve um campo de uma sequência de estrutura. Como uma sequência de estrutura é modelada como uma tupla, todos os campos são digitados como
PyObject *
. O índice no vetorfields
doPyStructSequence_Desc
determina qual campo da sequência de estrutura é descrito.Campo
Tipo em C
Significado
name
const char *
nome do campo ou
NULL
para terminar a lista de campos nomeados; definida paraPyStructSequence_UnnamedField
para deixar sem nomedoc
const char *
campo docstring ou
NULL
para omitir
-
const char * const
PyStructSequence_UnnamedField
¶ Valor especial para um nome de campo para deixá-lo sem nome.
Alterado na versão 3.9: O tipo foi alterado de
char *
.
-
PyObject*
PyStructSequence_New
(PyTypeObject *type)¶ - Return value: New reference.
Cria um instância de type, que deve ser criada com
PyStructSequence_NewType()
.
-
PyObject*
PyStructSequence_GetItem
(PyObject *p, Py_ssize_t pos)¶ - Return value: Borrowed reference.
Retorna o objeto na posição pos na sequência de estrutura apontada por p. Nenhuma verificação de limites é executada.
-
PyObject*
PyStructSequence_GET_ITEM
(PyObject *p, Py_ssize_t pos)¶ - Return value: Borrowed reference.
Macro equivalente de
PyStructSequence_GetItem()
.
-
void
PyStructSequence_SetItem
(PyObject *p, Py_ssize_t pos, PyObject *o)¶ Define o campo no índice pos da sequência de estrutura p para o valor o. Como
PyTuple_SET_ITEM()
, isto só deve ser usado para preencher novas instâncias.Nota
Esta função “rouba” uma referência a o.
-
void
PyStructSequence_SET_ITEM
(PyObject *p, Py_ssize_t *pos, PyObject *o)¶ Macro equivalente de
PyStructSequence_SetItem()
.Nota
Esta função “rouba” uma referência a o.