Tuple-objekt¶
-
PyTypeObject PyTuple_Type¶
- En del av Stabil ABI.
Denna instans av
PyTypeObject
representerar Pythons tupeltyp; det är samma objekt somtuple
i Python-lagret.
-
int PyTuple_Check(PyObject *p)¶
Returnerar true om p är ett tuple-objekt eller en instans av en subtyp av tuple-typen. Denna funktion lyckas alltid.
-
int PyTuple_CheckExact(PyObject *p)¶
Returnerar true om p är ett tuple-objekt, men inte en instans av en subtyp av tuple-typen. Denna funktion lyckas alltid.
-
PyObject *PyTuple_New(Py_ssize_t len)¶
- Returnera värde: Ny referens. En del av Stabil ABI.
Returnerar ett nytt tuple-objekt av storleken len, eller
NULL
med en undantagsuppsättning vid fel.
-
PyObject *PyTuple_Pack(Py_ssize_t n, ...)¶
- Returnera värde: Ny referens. En del av Stabil ABI.
Returnerar ett nytt tuple-objekt av storlek n, eller
NULL
med en exception set vid misslyckande. Tupelvärdena initialiseras till de efterföljande n C-argumenten som pekar på Python-objekt.PyTuple_Pack(2, a, b)
är ekvivalent medPy_BuildValue("(OO)", a, b)
.
-
Py_ssize_t PyTuple_Size(PyObject *p)¶
- En del av Stabil ABI.
Ta en pekare till ett tuple-objekt och returnera storleken på tupeln. Vid fel returneras
-1
och med en undantagsuppsättning.
-
Py_ssize_t PyTuple_GET_SIZE(PyObject *p)¶
Som
PyTuple_Size()
, men utan felkontroll.
-
PyObject *PyTuple_GetItem(PyObject *p, Py_ssize_t pos)¶
- Returnera värde: Lånad referens. En del av Stabil ABI.
Returnerar objektet på position pos i den tupel som p pekar på. Om pos är negativ eller utanför gränserna, returneras
NULL
och ettIndexError
undantag anges.Den returnerade referensen är lånad från tupeln p (det vill säga: den är bara giltig så länge du har en referens till p). För att få en strong reference, använd
Py_NewRef(PyTuple_GetItem(...))
ellerPySequence_GetItem()
.
-
PyObject *PyTuple_GET_ITEM(PyObject *p, Py_ssize_t pos)¶
- Returnera värde: Lånad referens.
Som
PyTuple_GetItem()
, men gör ingen kontroll av argumenten.
-
PyObject *PyTuple_GetSlice(PyObject *p, Py_ssize_t low, Py_ssize_t high)¶
- Returnera värde: Ny referens. En del av Stabil ABI.
Returnerar den del av tupeln som pekas ut av p mellan low och high, eller
NULL
med en undantagsuppsättning vid fel.Detta är motsvarigheten till Python-uttrycket
p[low:high]
. Indexering från slutet av tupeln stöds inte.
-
int PyTuple_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)¶
- En del av Stabil ABI.
Infoga en referens till objektet o på position pos i den tupel som p pekar på. Returnerar
0
vid framgång. Om pos är utanför gränserna, returneras-1
och ettIndexError
undantag anges.Anteckning
Denna funktion ”stjäl” en referens till o och kastar bort en referens till ett objekt som redan finns i tupeln på den berörda positionen.
-
void PyTuple_SET_ITEM(PyObject *p, Py_ssize_t pos, PyObject *o)¶
Som
PyTuple_SetItem()
, men gör ingen felkontroll och bör endast användas för att fylla i helt nya tupler.Gränskontroll utförs som ett påstående om Python är byggt i debugläge eller
med påstående
.Anteckning
Denna funktion ”stjäl” en referens till o och, till skillnad från
PyTuple_SetItem()
, förkastar den inte en referens till något objekt som ersätts; alla referenser i tupeln på position pos läcker ut.Varning
Detta makro ska endast användas på tuples som är nyskapade. Om du använder detta makro på en tupel som redan används (eller med andra ord har ett refcount > 1) kan det leda till ett odefinierat beteende.
-
int _PyTuple_Resize(PyObject **p, Py_ssize_t newsize)¶
Kan användas för att ändra storlek på en tupel. newsize kommer att vara den nya längden på tupeln. Eftersom tuplar förutsätts vara oföränderliga bör detta endast användas om det bara finns en referens till objektet. Använd inte detta om tupeln redan kan vara känd av någon annan del av koden. Tupeln kommer alltid att växa eller krympa i slutet. Tänk på detta som att förstöra den gamla tupeln och skapa en ny, fast mer effektivt. Returnerar
0
vid framgång. Klientkoden bör aldrig anta att det resulterande värdet av*p
kommer att vara detsamma som innan funktionen anropades. Om objektet som refereras till av*p
ersätts, förstörs det ursprungliga*p
. Om funktionen misslyckas, returneras-1
och*p
sätts tillNULL
, och ger upphov tillMemoryError
ellerSystemError
.
Struct Sequence Objects¶
Struct sequence-objekt är C-motsvarigheten till namedtuple()
-objekt, dvs. en sekvens vars objekt också kan nås via attribut. För att skapa en struct-sekvens måste du först skapa en specifik struct-sekvenstyp.
-
PyTypeObject *PyStructSequence_NewType(PyStructSequence_Desc *desc)¶
- Returnera värde: Ny referens. En del av Stabil ABI.
Skapar en ny struct sequence-typ från data i desc, enligt beskrivningen nedan. Instanser av den resulterande typen kan skapas med
PyStructSequence_New()
.Returnerar
NULL
med en exceptionell uppsättning vid fel.
-
void PyStructSequence_InitType(PyTypeObject *type, PyStructSequence_Desc *desc)¶
Initialiserar en struct-sekvens typ type från desc på plats.
-
int PyStructSequence_InitType2(PyTypeObject *type, PyStructSequence_Desc *desc)¶
Som
PyStructSequence_InitType()
, men returnerar0
vid framgång och-1
med en exception set vid misslyckande.Tillagd i version 3.4.
-
type PyStructSequence_Desc¶
- En del av Stabil ABI (inklusive alla medlemmar).
Innehåller metainformationen för en struct-sekvenstyp som ska skapas.
-
const char *name¶
Fullständigt kvalificerat namn på typen; nollavslutad UTF-8-kodad. Namnet måste innehålla modulnamnet.
-
const char *doc¶
Pekare till docstring för typen eller
NULL
för att utelämna.
-
PyStructSequence_Field *fields¶
Pekare till en
NULL
-avslutad array med fältnamn av den nya typen.
-
int n_in_sequence¶
Antal fält som är synliga för Python-sidan (om de används som tuple).
-
const char *name¶
-
type PyStructSequence_Field¶
- En del av Stabil ABI (inklusive alla medlemmar).
Beskriver ett fält i en struct sequence. Eftersom en struct sequence är modellerad som en tupel, är alla fält typade som PyObject*. Indexet i
fields
-arrayen iPyStructSequence_Desc
avgör vilket fält i struct-sekvensen som beskrivs.-
const char *name¶
Namn på fältet eller
NULL
för att avsluta listan över namngivna fält, inställt påPyStructSequence_UnnamedField
för att lämna fältet utan namn.
-
const char *doc¶
Fältets dokumentsträng eller
NULL
för att utelämna.
-
const char *name¶
-
const char *const PyStructSequence_UnnamedField¶
- En del av Stabil ABI sedan version 3.11.
Specialvärde för ett fältnamn för att lämna det namnlöst.
Ändrad i version 3.9: Typen ändrades från
char *
.
-
PyObject *PyStructSequence_New(PyTypeObject *type)¶
- Returnera värde: Ny referens. En del av Stabil ABI.
Skapar en instans av typ, som måste ha skapats med
PyStructSequence_NewType()
.Returnerar
NULL
med en exceptionell uppsättning vid fel.
-
PyObject *PyStructSequence_GetItem(PyObject *p, Py_ssize_t pos)¶
- Returnera värde: Lånad referens. En del av Stabil ABI.
Returnerar objektet på position pos i struct-sekvensen som pekas ut av p.
Gränskontroll utförs som ett påstående om Python är byggt i debugläge eller
med påstående
.
-
PyObject *PyStructSequence_GET_ITEM(PyObject *p, Py_ssize_t pos)¶
- Returnera värde: Lånad referens.
Alias till
PyStructSequence_GetItem()
.Ändrad i version 3.13: Nu implementerad som ett alias till
PyStructSequence_GetItem()
.
-
void PyStructSequence_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)¶
- En del av Stabil ABI.
Ställer in fältet vid index pos i struct-sekvensen p till värdet o. Precis som
PyTuple_SET_ITEM()
bör detta endast användas för att fylla i helt nya instanser.Gränskontroll utförs som ett påstående om Python är byggt i debugläge eller
med påstående
.Anteckning
Denna funktion ”stjäl” en referens till o.
-
void PyStructSequence_SET_ITEM(PyObject *p, Py_ssize_t *pos, PyObject *o)¶
Alias till
PyStructSequence_SetItem()
.Ändrad i version 3.13: Nu implementerad som ett alias till
PyStructSequence_SetItem()
.