# タプルオブジェクト (tuple object)

`PyTupleObject`

  この `PyObject` のサブタイプは Python のタプルオブジェクトを表現します。

PyTypeObject `PyTuple_Type`

  この `PyTypeObject` のインスタンスは Python のタプル型を表現します; Python レイヤにおける `tuple` や `types.TupleType` と同じオブジェクトです。

int `PyTuple_Check`(PyObject *p)

  p がタプルオブジェクトか、タプル型のサブタイプのインスタンスである場合に真を返します。

  バージョン 2.2 で変更: サブタイプを引数にとれるようになりました.

int `PyTuple_CheckExact`(PyObject *p)

  p がタプルオブジェクトで、かつタプル型のサブタイプのインスタンスでない場合に真を返します。

  バージョン 2.2 で追加.

PyObject* `PyTuple_New`(Py_ssize_t len)
  Return value: New reference.

  サイズが len の新たなタプルオブジェクトを返します。失敗すると NULL を返します。

  バージョン 2.5 で変更: この関数は以前は len の型に `int` を利用していました。この変更により、 64 bit システムを正しくサポートするには修正が必要になります。

PyObject* `PyTuple_Pack`(Py_ssize_t n, ...)
  Return value: New reference.

  サイズが n の新たなタプルオブジェクトを返します。失敗すると NULL を返します。タプルの値は後続の n 個の Python オブジェクトを指す C 引数になります。`PyTuple_Pack(2, a, b)` は `Py_BuildValue("(OO)", a, b)` と同じです。

  バージョン 2.4 で追加.

  バージョン 2.5 で変更: この関数は以前は n の型に `int` を利用していました。この変更により、 64bit システムを正しくサポートするには修正が必要になります。

Py_ssize_t `PyTuple_Size`(PyObject *p)

  タプルオブジェクトへのポインタを引数にとり、そのタプルのサイズを返します。

  バージョン 2.5 で変更: この関数は以前は `int` を返していました。この変更により、 64 bit システムを正しくサポートするには修正が必要になります。

Py_ssize_t `PyTuple_GET_SIZE`(PyObject *p)

  タプル p のサイズを返しますが、p は非 NULL でなくてはならず、タプルオブジェクトを指していなければなりません; この関数はエラーチェックを行いません。

  バージョン 2.5 で変更: この関数は以前は `int` を返していました。この変更により、 64 bit システムを正しくサポートするには修正が必要になります。

PyObject* `PyTuple_GetItem`(PyObject *p, Py_ssize_t pos)
  Return value: Borrowed reference.

  Return the object at position pos in the tuple pointed to by p. If pos is out of bounds, return NULL and set an `IndexError` exception.

  バージョン 2.5 で変更: この関数は以前は pos の型に `int` を利用していました。この変更により、 64bit システムを正しくサポートするには修正が必要になります。

PyObject* `PyTuple_GET_ITEM`(PyObject *p, Py_ssize_t pos)
  Return value: Borrowed reference.

  `PyTuple_GetItem()` に似ていますが、引数に対するエラーチェックを行いません。

  バージョン 2.5 で変更: この関数は以前は pos の型に `int` を利用していました。この変更により、 64bit システムを正しくサポートするには修正が必要になります。

PyObject* `PyTuple_GetSlice`(PyObject *p, Py_ssize_t low, Py_ssize_t high)
  Return value: New reference.

  Return the slice of the tuple pointed to by p between low and high, or NULL on failure. This is the equivalent of the Python expression `p[low:high]`. Indexing from the end of the list is not supported.

  バージョン 2.5 で変更: この関数は以前は low, high の型に `int` を利用していました。この変更により、 64bit システムを正しくサポートするには修正が必要になります。

int `PyTuple_SetItem`(PyObject *p, Py_ssize_t pos, PyObject *o)

  Insert a reference to object o at position pos of the tuple pointed to by p. Return `0` on success. If pos is out of bounds, return `-1` and set an `IndexError` exception.

  注釈

  This function "steals" a reference to o and discards a reference to an item already in the tuple at the affected position.

  バージョン 2.5 で変更: この関数は以前は pos の型に `int` を利用していました。この変更により、 64bit システムを正しくサポートするには修正が必要になります。

void `PyTuple_SET_ITEM`(PyObject *p, Py_ssize_t pos, PyObject *o)

  `PyTuple_SetItem()` に似ていますが、エラーチェックを行わず、新たなタプルに値を入れるとき 以外には使ってはなりません 。

  注釈

  This macro "steals" a reference to o, and, unlike `PyTuple_SetItem()`, does not discard a reference to any item that is being replaced; any reference in the tuple at position pos will be leaked.

  バージョン 2.5 で変更: この関数は以前は pos の型に `int` を利用していました。この変更により、 64bit システムを正しくサポートするには修正が必要になります。

int `_PyTuple_Resize`(PyObject **p, Py_ssize_t newsize)

  タプルをリサイズする際に使えます。 newsize はタプルの新たな長さです。タプルは変更不能なオブジェクト ということになっている ので、この関数はこのオブジェクトに対してただ一つしか参照がない時以外には使ってはなりません。タプルがコード中の他の部分ですでに参照されている場合には、この関数を 使ってはなりません 。タプルは常に指定サイズの末尾まで伸縮します。成功した場合には `0` を返します。クライアントコードは、 `*p` の値が呼び出し前と同じになると期待してはなりません。 `*p` が置き換えられた場合、オリジナルの `*p` は破壊されます。失敗すると `-1` を返し、 `*p` を NULL に設定して、 `MemoryError` または `SystemError` を送出します。

  バージョン 2.2 で変更: 使われていなかった三つ目のパラメタ、 last_is_sticky を削除しました.

  バージョン 2.5 で変更: この関数は以前は newsize の型に `int` を利用していました。この変更により、 64 bit システムを正しくサポートするには修正が必要になります。

int `PyTuple_ClearFreeList`()

  free list をクリアします。解放された要素数を返します。

  バージョン 2.6 で追加.