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

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

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

int `PyTuple_Check`( | PyObject *p)

  p がタプルオブジェクトか、タプル型のサブタイプのインスタンス である場合に真を返します。 バージョン2.2 以降で変更された 仕様: サブタイプを引数にとれるようになりました

int `PyTuple_CheckExact`( | PyObject *p)

  p がタプルオブジェクトで、かつタプル型のサブタイプのインスタンス でない場合に真を返します。 バージョン2.2 以降で新規追加された 仕様です。

PyObject* `PyTuple_New`( | int len)

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

int `PyTuple_Size`( | PyObject *p)

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

int `PyTuple_GET_SIZE`( | PyObject *p)

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

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

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

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

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

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

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

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

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

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

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

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

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