タプルオブジェクト (tuple object)¶
-
PyTypeObject PyTuple_Type¶
- 次に属します: Stable ABI.
この
PyTypeObjectのインスタンスは Python のタプル型を表現します; Python レイヤにおけるtupleと同じオブジェクトです。
-
PyObject *PyTuple_New(Py_ssize_t len)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI. Thread safety: Atomic.
サイズ
lenの新しいタプルオブジェクトを返します。 失敗した場合は例外を設定してNULLを返します。
-
PyObject *PyTuple_FromArray(PyObject *const *array, Py_ssize_t size)¶
- Thread safety: Atomic.
要素数
sizeのタプルを作成し、arrayから新しいタプルに参照をコピーします。sizeが0の場合、arrayはNULLでも構いません。成功した場合は新しい参照を返します。 エラーの場合は例外を設定して
NULLを返します。Added in version 3.15.
-
PyObject *PyTuple_Pack(Py_ssize_t n, ...)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI. Thread safety: Atomic.
サイズ
nの新しいタプルオブジェクトを返します。 失敗した場合は例外を設定してNULLを返します。 タプルの各値は、続くn個の C 引数が指す Python オブジェクトで初期化されます。PyTuple_Pack(2, a, b)はPy_BuildValue("(OO)", a, b)と同等です。
-
Py_ssize_t PyTuple_Size(PyObject *p)¶
- 次に属します: Stable ABI. Thread safety: Atomic.
タプルオブジェクトへのポインタを受け取り、そのタプルのサイズを返します。 エラーの場合は例外を設定して
-1を返します。
-
Py_ssize_t PyTuple_GET_SIZE(PyObject *p)¶
- Thread safety: Atomic.
PyTuple_Size()と同様ですが、エラーチェックを行いません。
-
PyObject *PyTuple_GetItem(PyObject *p, Py_ssize_t pos)¶
- 戻り値: 借用参照。 次に属します: Stable ABI. Thread safety: Safe to call from multiple threads with external synchronization only.
p の指すタプルオブジェクト内の、位置 pos にあるオブジェクトを返します。 pos が負であるか範囲を超えている場合、
NULLを返してIndexError例外をセットします。返される参照はタプル
pからの借用参照です (つまり、pへの参照を保持している間だけ有効です)。 強参照 を取得するには、Py_NewRef(PyTuple_GetItem(...))またはPySequence_GetItem()を使ってください。
-
PyObject *PyTuple_GET_ITEM(PyObject *p, Py_ssize_t pos)¶
- 戻り値: 借用参照。 Thread safety: Safe to call from multiple threads with external synchronization only.
PyTuple_GetItem()に似ていますが、引数に対するエラーチェックを行いません。
-
PyObject *PyTuple_GetSlice(PyObject *p, Py_ssize_t low, Py_ssize_t high)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI. Thread safety: Atomic.
pが指すタプルのlowからhighまでのスライスを返します。 失敗した場合は例外を設定してNULLを返します。Python の式
p[low:high]と同等です。 タプルの末尾からのインデックス指定はサポートしていません。
-
int PyTuple_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)¶
- 次に属します: Stable ABI. Thread safety: Safe to call from multiple threads with external synchronization only.
pが指すタプルの位置posに、オブジェクトoへの参照を挿入します。 成功した場合は0を返します。posが範囲外の場合は、IndexError例外を設定して-1を返します。 この関数は、作成したばかりのタプルに値を設定するためだけに使ってください。 既存のタプルに使うとスレッドセーフではありません。注釈
この関数は
oへの参照を「盗み」、タプルのその位置にすでにあった要素への参照を破棄します (NULLだった場合を除きます)。
-
void PyTuple_SET_ITEM(PyObject *p, Py_ssize_t pos, PyObject *o)¶
- Thread safety: Safe to call from multiple threads with external synchronization only.
PyTuple_SetItem()と同様ですが、エラーチェックを行いません。 作成したばかりのタプルに値を設定するため だけ に使ってください。 既存のタプルに使うとスレッドセーフではありません。Python を デバッグモード または
アサーションを有効にしてビルドした場合、アサーションによる境界チェックが行われます。注釈
この関数は
oへの参照を「盗みます」。PyTuple_SetItem()と異なり、置き換えられる要素への参照は破棄 しません。 タプルの位置posにすでに参照があれば、その参照はリークします。警告
このマクロは、新しく作成したタプルに だけ 使ってください。 すでに使われているタプル (つまり参照カウントが 1 より大きいタプル) に使うと、未定義の動作を引き起こす可能性があります。
-
int _PyTuple_Resize(PyObject **p, Py_ssize_t newsize)¶
- Thread safety: Safe to call from multiple threads with external synchronization only.
タプルのサイズ変更に使えます。
newsizeはタプルの新しい長さです。 タプルは 本来 不変なので、この関数はオブジェクトへの参照が一つだけの場合に限って使ってください。 ほかのコードがそのタプルをすでに知っている可能性がある場合は、使っては いけません。 タプルは常に末尾で伸縮します。 古いタプルを破棄して新しいタプルを作成する操作を、より効率的に行うものと考えてください。 成功した場合は0を返します。 呼び出し後の*pが呼び出し前と同じ値であると仮定してはいけません。*pが参照するオブジェクトが置き換えられる場合、元の*pは破棄されます。 失敗した場合は-1を返し、*pをNULLに設定してMemoryErrorまたはSystemErrorを送出します。
Struct Sequence オブジェクト¶
struct sequence オブジェクトは 名前付きタプル、つまり属性を通じても要素にアクセスできるシーケンスです。
collections.namedtuple() に似ていますが、インターフェースは多少異なります。
struct sequence を作成するには、まず専用の struct sequence 型を作成する必要があります。
-
PyTypeObject *PyStructSequence_NewType(PyStructSequence_Desc *desc)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI. Thread safety: Atomic.
後述の desc 中のデータから新しい struct sequence 型を生成します。返される型のインスタンスは
PyStructSequence_New()で生成できます。失敗した場合は例外を設定して
NULLを返します。
-
void PyStructSequence_InitType(PyTypeObject *type, PyStructSequence_Desc *desc)¶
- Thread safety: Safe to call without external synchronization on distinct objects.
struct sequence 型である type を desc をもとにその場で初期化します。
-
int PyStructSequence_InitType2(PyTypeObject *type, PyStructSequence_Desc *desc)¶
- Thread safety: Safe to call without external synchronization on distinct objects.
PyStructSequence_InitType()と同様ですが、成功した場合は0を返し、失敗した場合は例外を設定して-1を返します。Added in version 3.4.
-
type PyStructSequence_Desc¶
- 次に属します: Stable ABI (すべてのメンバーを含む).
生成するstruct sequence 型のメタデータを保持します。
-
const char *name¶
型の完全修飾名。 ヌル終端された UTF-8 エンコードの文字列です。 モジュール名を含む必要があります。
-
const char *doc¶
型の docstring へのポインタ。 省略する場合は
NULL。
-
PyStructSequence_Field *fields¶
新しい型のフィールド名を持つ、
NULL終端の配列へのポインタ。
-
int n_in_sequence¶
タプルとして使う場合に Python 側から見えるフィールドの数。
-
const char *name¶
-
type PyStructSequence_Field¶
- 次に属します: Stable ABI (すべてのメンバーを含む).
struct sequence のフィールドを記述します。 struct sequence はタプルをモデルとしているので、すべてのフィールドは PyObject* 型です。
PyStructSequence_Descのfields配列内のインデックスによって、struct sequence のどのフィールドを記述するかが決まります。-
const char *name¶
フィールド名。 名前付きフィールドの一覧を終了するには
NULL、名前を付けないフィールドにはPyStructSequence_UnnamedFieldを指定します。
-
const char *doc¶
フィールドの docstring。 省略する場合は
NULL。
-
const char *name¶
-
const char *const PyStructSequence_UnnamedField¶
- 次に属します: Stable ABI (バージョン 3.11 より).
フィールド名を名前がないままするための特殊な値。
バージョン 3.9 で変更: 型が
char *から変更されました。
-
PyObject *PyStructSequence_New(PyTypeObject *type)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI. Thread safety: Atomic.
type のインスタンスを生成します。 type は
PyStructSequence_NewType()によって事前に生成していなければなりません。失敗した場合は例外を設定して
NULLを返します。
-
PyObject *PyStructSequence_GetItem(PyObject *p, Py_ssize_t pos)¶
- 戻り値: 借用参照。 次に属します: Stable ABI. Thread safety: Safe to call from multiple threads with external synchronization only.
pが指す struct sequence の位置posにあるオブジェクトを返します。 返される参照は struct sequencepからの借用参照です (つまり、pへの参照を保持している間だけ有効です)。Python を デバッグモード または
アサーションを有効にしてビルドした場合、アサーションによる境界チェックが行われます。
-
PyObject *PyStructSequence_GET_ITEM(PyObject *p, Py_ssize_t pos)¶
- 戻り値: 借用参照。 Thread safety: Safe to call from multiple threads with external synchronization only.
PyStructSequence_GetItem()の別名です。バージョン 3.13 で変更:
PyStructSequence_GetItem()の別名として実装されるようになりました。
-
void PyStructSequence_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)¶
- 次に属します: Stable ABI. Thread safety: Safe to call from multiple threads with external synchronization only.
struct sequence p の pos の位置にあるフィールドに値 o を設定します。
PyTuple_SET_ITEM()のように、生成したてのインスタンスに対してのみ使用すべきです。Python を デバッグモード または
アサーションを有効にしてビルドした場合、アサーションによる境界チェックが行われます。注釈
この関数は
oへの参照を「盗みます」。
-
void PyStructSequence_SET_ITEM(PyObject *p, Py_ssize_t *pos, PyObject *o)¶
- Thread safety: Safe to call from multiple threads with external synchronization only.
PyStructSequence_SetItem()の別名です。バージョン 3.13 で変更:
PyStructSequence_SetItem()の別名として実装されるようになりました。