##
4 タプルオブジェクト (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)

  戻り値: 新たな参照.
  サイズが len 新たなタプルオブジェクトを返します。 失敗すると `NULL` を返します。

PyObject* `PyTuple_Pack`( | Py_ssize_t n, ...)

  戻り値: 新たな参照.
  サイズ n 新たなタプルオブジェクトを返します。失敗すると`NULL` を返します。タプルの値は後続の n 個の Python オブジェクトを指す C 引数になります。"`PyTuple_Pack(2, a, b)`"は "`Py_BuildValue("(OO)", a, b)`" と同じです。 バージョン 2.4 で 新たに追加 された仕様です。

int `PyTuple_Size`( | PyObject *p)

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

int `PyTuple_GET_SIZE`( | PyObject *p)

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

PyObject* `PyTuple_GetItem`( | PyObject *p, Py_ssize_t pos)

  戻り値: 借りた参照.
  p の指すタプルオブジェクト内の、位置 pos にあるオブジェクト を返します。 pos が範囲を超えている場合、 `NULL` を返して `IndexError` 例外をセットします。

PyObject* `PyTuple_GET_ITEM`( | PyObject *p, Py_ssize_t pos)

  戻り値: 借りた参照.
  `PyTuple_GetItem()` に似ていますが、引数に対する エラーチェックを行いません。

PyObject* `PyTuple_GetSlice`( | PyObject *p, Py_ssize_t low, Py_ssize_t high)

  戻り値: 新たな参照.
  p の指すタプルオブジェクト内の、位置 low から high までのスライスを取り出して、タプルオブジェクトとして 返します。

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

  p の指すタプルオブジェクト内の位置 pos に、 オブジェクト o への参照を挿入します。成功した場合には `0` を返します。 注意: この関数は o への参照を ``盗み取り'' ます。

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

  `PyTuple_SetItem()` に似ていますが、エラーチェックを 行わず、新たなタプルに値を入れるとき 以外には使ってはなりません。 注意: この関数は o への参照を ``盗み取り'' ます。

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

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