元組對(duì)象?
-
PyTypeObject
PyTuple_Type? PyTypeObject的實(shí)例代表一個(gè) Python 元組類型,這與 Python 層面的tuple是相同的對(duì)象。
-
PyObject*
PyTuple_New(Py_ssize_t?len)? - Return value: New reference.
成功時(shí)返回一個(gè)新的元組對(duì)象,長度為 len,失敗時(shí)返回“NULL”。
-
PyObject*
PyTuple_Pack(Py_ssize_t?n, ...)? - Return value: New reference.
成功時(shí)返回一個(gè)新的元組對(duì)象,大小為 n ,失敗時(shí)返回
NULL。 元組值初始化為指向 Python 對(duì)象的后續(xù) n C 參數(shù)。PyTuple_Pack(2, a, b)和Py_BuildValue("(OO)", a, b)相等。
-
PyObject*
PyTuple_GetItem(PyObject?*p, Py_ssize_t?pos)? - Return value: Borrowed reference.
返回 p 所指向的元組中,位于 pos 處的對(duì)象。 如果 pos 超出界限,返回
NULL,并拋出一個(gè)IndexError異常。
-
PyObject*
PyTuple_GET_ITEM(PyObject?*p, Py_ssize_t?pos)? - Return value: Borrowed reference.
類似于
PyTuple_GetItem(),但不檢查其參數(shù)。
-
PyObject*
PyTuple_GetSlice(PyObject?*p, Py_ssize_t?low, Py_ssize_t?high)? - Return value: New reference.
返回*p*所指向的元組的切片,在*low*和*high*之間,或者在失敗時(shí)返回``NULL``。這等同于Python表達(dá)式:
p[low:high]。不支持從列表末尾索引。
-
int
PyTuple_SetItem(PyObject?*p, Py_ssize_t?pos, PyObject?*o)? 在 p 指向的元組的 pos 位置插入對(duì)對(duì)象 o 的引用。 成功時(shí)返回
0;如果 pos 越界,則返回-1,并拋出一個(gè)IndexError異常。注解
此函數(shù)會(huì)“竊取”對(duì)*o*的引用,并丟棄對(duì)元組中已在受影響位置的條目的引用。
-
void
PyTuple_SET_ITEM(PyObject?*p, Py_ssize_t?pos, PyObject?*o)? 類似于
PyTuple_SetItem(),但不進(jìn)行錯(cuò)誤檢查,并且應(yīng)該 只是 被用來填充全新的元組。注解
這個(gè)宏會(huì)“偷走”一個(gè)對(duì) o 的引用,但與
PyTuple_SetItem()不同,它 不會(huì) 丟棄對(duì)任何被替換項(xiàng)的引用;元組中位于 pos 位置的任何引用都將被泄漏。
-
int
_PyTuple_Resize(PyObject?**p, Py_ssize_t?newsize)? 可以用于調(diào)整元組的大小。 newsize 將是元組的新長度。 因?yàn)樵M 被認(rèn)為 是不可變的,所以只有在對(duì)象僅有一個(gè)引用時(shí),才應(yīng)該使用它。 如果元組已經(jīng)被代碼的其他部分所引用,請(qǐng)不要使用此項(xiàng)。 元組在最后總是會(huì)增長或縮小。 把它看作是銷毀舊元組并創(chuàng)建一個(gè)新元組,只會(huì)更有效。 成功時(shí)返回
0。 客戶端代碼不應(yīng)假定*p的結(jié)果值將與調(diào)用此函數(shù)之前的值相同。 如果替換了*p引用的對(duì)象,則原始的*p將被銷毀。 失敗時(shí),返回``-1``,將*p設(shè)置為NULL,并引發(fā)MemoryError或者SystemError。
-
int
PyTuple_ClearFreeList()? 清空釋放列表。 返回所釋放的條目數(shù)。
結(jié)構(gòu)序列對(duì)象?
結(jié)構(gòu)序列對(duì)象是等價(jià)于 namedtuple() 的 C 對(duì)象,即一個(gè)序列,其中的條目也可以通過屬性訪問。 要?jiǎng)?chuàng)建結(jié)構(gòu)序列,你首先必須創(chuàng)建特定的結(jié)構(gòu)序列類型。
-
PyTypeObject*
PyStructSequence_NewType(PyStructSequence_Desc?*desc)? - Return value: New reference.
根據(jù) desc 中的數(shù)據(jù)創(chuàng)建一個(gè)新的結(jié)構(gòu)序列類型,如下所述。 可以使用
PyStructSequence_New()創(chuàng)建結(jié)果類型的實(shí)例。
-
void
PyStructSequence_InitType(PyTypeObject?*type, PyStructSequence_Desc?*desc)? 從*desc*就地初始化結(jié)構(gòu)序列類型*type*。
-
int
PyStructSequence_InitType2(PyTypeObject?*type, PyStructSequence_Desc?*desc)? 與
PyStructSequence_InitType相同,但成功時(shí)返回0,失敗時(shí)返回-1。3.4 新版功能.
-
PyStructSequence_Desc? 包含要?jiǎng)?chuàng)建的結(jié)構(gòu)序列類型的元信息。
域
C 類型
含義
nameconst char *結(jié)構(gòu)序列類型的名稱
docconst char *指向要忽略類型的文檔字符串或
NULL的指針fieldsPyStructSequence_Field *指向以
NULL結(jié)尾的數(shù)組的指針,其字段名稱為新類型n_in_sequenceintPython側(cè)可見的字段數(shù)(如果用作元組)
-
PyStructSequence_Field? 描述一個(gè)結(jié)構(gòu)序列的字段。 當(dāng)結(jié)構(gòu)序列被建模為元組時(shí),所有字段的類型都是
PyObject*。PyStructSequence_Desc的fields數(shù)組的索引確定了描述的是結(jié)構(gòu)序列的哪個(gè)字段。域
C 類型
含義
nameconst char *字段的名稱或``NULL`` ,若要結(jié)束命名字段的列表,請(qǐng)?jiān)O(shè)置為:
PyStructSequence_UnnamedField以保留未命名字段docconst char *要忽略的字段docstring或``NULL``
-
char*
PyStructSequence_UnnamedField? 字段名的特殊值將保持未命名狀態(tài)。
-
PyObject*
PyStructSequence_New(PyTypeObject?*type)? - Return value: New reference.
創(chuàng)建 type 的實(shí)例,該實(shí)例必須使用
PyStructSequence_NewType()創(chuàng)建。
-
PyObject*
PyStructSequence_GetItem(PyObject?*p, Py_ssize_t?pos)? - Return value: Borrowed reference.
返回*p*所指向的結(jié)構(gòu)序列中,位于*pos*處的對(duì)象。不需要進(jìn)行邊界檢查。
-
void
PyStructSequence_SetItem(PyObject?*p, Py_ssize_t?pos, PyObject?*o)? 將結(jié)構(gòu)序列 p 的索引 pos 處的字段設(shè)置為值 o。 與
PyTuple_SET_ITEM()一樣,它應(yīng)該只用于填充全新的實(shí)例。注解
這個(gè)函數(shù)“竊取”了指向*o*的一個(gè)引用。
-
void
PyStructSequence_SET_ITEM(PyObject?*p, Py_ssize_t?*pos, PyObject?*o)? PyStructSequence_SetItem()的宏版本。注解
這個(gè)函數(shù)“竊取”了指向*o*的一個(gè)引用。
