# Function オブジェクト

Functionオブジェクト固有の関数はわずかです。

`PyFunctionObject`

  関数に使われるCの構造体。

PyTypeObject `PyFunction_Type`

  `PyTypeObject` 型のインスタンスで、 Python の関数型を表します。これは Python プログラムに `types.FunctionType` として公開されています。

int `PyFunction_Check`(PyObject *o)

  o が関数オブジェクト (`PyFunction_Type` 型なら) なら true を返します。引数は NULL であってはいけません。

PyObject* `PyFunction_New`(PyObject *code, PyObject *globals)
  Return value: New reference.

  コードオブジェクト code に関連付けられた新しい関数オブジェクトを返します。globals はこの関数からアクセスできるグローバル変数の辞書でなければなりません。

  関数のドキュメント文字列、名前および __module__ はコードオブジェクトから取得されます。引数のデフォルト値やクロージャは NULL にセットされます。

PyObject* `PyFunction_GetCode`(PyObject *op)
  Return value: Borrowed reference.

  関数オブジェクト op に関連付けられたコードオブジェクトを返します。

PyObject* `PyFunction_GetGlobals`(PyObject *op)
  Return value: Borrowed reference.

  関数オブジェクト op に関連付けられたglobals辞書を返します。

PyObject* `PyFunction_GetModule`(PyObject *op)
  Return value: Borrowed reference.

  関数オブジェクト op の __module__ 属性を返します。これには普通はモジュール名の文字列が入っていますが、Python コードから他のオブジェクトをセットされることもあります。

PyObject* `PyFunction_GetDefaults`(PyObject *op)
  Return value: Borrowed reference.

  関数オブジェクト op の引数のデフォルト値を返します。引数のタプルか NULL になります。

int `PyFunction_SetDefaults`(PyObject *op, PyObject *defaults)

  関数オブジェクト op の引数のデフォルト値を設定します。defaults は Py_None かタプルでなければいけません。

  失敗した時は、 `SystemError` を発生させ、 `-1` を返します。

PyObject* `PyFunction_GetClosure`(PyObject *op)
  Return value: Borrowed reference.

  関数オブジェクト op に設定されたクロージャを返します。NULL か cell オブジェクトのタプルです。

int `PyFunction_SetClosure`(PyObject *op, PyObject *closure)

  関数オブジェクト op にクロージャを設定します。closure は、Py_None もしくは cell オブジェクトのタプルでなければなりません。

  失敗した時は、 `SystemError` を発生させ、 `-1` を返します。