Function オブジェクト
*********************

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

type PyFunctionObject

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

PyTypeObject PyFunction_Type

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

int PyFunction_Check(PyObject *o)

   *o* が関数オブジェクト ("PyFunction_Type" 型である) 場合に真を返し
   ます。パラメータは "NULL" にできません。この関数は常に成功します。

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

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

   関数のドキュメント文字列と名前はコードオブジェクトから取得されます
   。 *__module__* は *globals* から取得されます。 引数のデフォルト値
   やアノテーション、クロージャは "NULL" に設定されます。
   *__qualname__* は関数名と同じ値に設定されます。

PyObject *PyFunction_NewWithQualName(PyObject *code, PyObject *globals, PyObject *qualname)
    *Return value: New reference.*

   "PyFunction_New()" に似ていますが、関数オブジェクトの
   "__qualname__" 属性に値をセットできます。 *qualname* はユニコードオ
   ブジェクトか "NULL" でなくてはなりません。"NULL" だった場合、
   "__qualname__" 属性には "__name__" 属性と同じ値がセットされます。

   バージョン 3.3 で追加.

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.*

   Return a *borrowed reference* to the *__module__* attribute of the
   function object *op*. It can be *NULL*.

   これには普通はモジュール名の文字列が入っていますが、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" を返します。

PyObject *PyFunction_GetAnnotations(PyObject *op)
    *Return value: Borrowed reference.*

   関数オブジェクト *op* のアノテーションを返します。 返り値は修正可能
   な辞書か "NULL" になります。

int PyFunction_SetAnnotations(PyObject *op, PyObject *annotations)

   関数オブジェクト *op* のアノテーションを設定します。 *annotations*
   は辞書か、"Py_None" でなければなりません。

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