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

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

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

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

int PyFunction_SetDefaults(PyObject *op, PyObject *defaults)

関数オブジェクト op の引数のデフォルト値を設定します。defaultsPy_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 を返します。