#
2 オブジェクト、型および参照カウント

Python/C API 関数は、 `PyObject*` 型の一つ以上の引数と 戻り値を持ちます。この型は、任意の Python オブジェクトを表現する 不透明 (opaque) なデータ型へのポインタです。 Python 言語は、全ての Python オブジェクト型をほとんどの状況 (例えば代入、スコープ規則 (scope rule)、引数渡し) で同様に 扱います。ほとんど全ての Python オブジェクトはヒープ (heap) 上に 置かれます: このため、`PyObject` 型のオブジェクトは、 自動記憶 (automatic) としても静的記憶 (static) としても 宣言できません。`PyObject*` 型のポインタ変数のみ 宣言できます。唯一の例外は、型オブジェクト です; 型オブジェクトはメモリ解放 (deallocate) してはならないので、 通常は静的記憶の `PyTypeObject` オブジェクトにします。

全ての Python オブジェクトには (Python 整数型ですら) 型 (type) と参照カウント (reference count) があります。 あるオブジェクトの型は、そのオブジェクトがどの種類のオブジェクト か (例えば整数、リスト、ユーザ定義関数、など; その他多数については、 Python リファレンスマニュアル で説明して います) を決定します。よく知られている型については、各々マクロが 存在して、あるオブジェクトがその型かどうか調べられます; 例えば、 "`PyList_Check(a)`" は、a で示されたオブジェクトが Python リスト型のとき (かつそのときに限り) 真値を返します。