Pythonの関数にはいくつかの種類があります。
関数に使われるCの構造体
PyTypeObject 型のインスタンスで、 Python の関数型を表します。これは Python プログラムに types.FunctionType として公開されます。
o が関数オブジェクト (PyFunction_Type を持っている) なら true を返します。引数は NULL であってはいけません。
コードオブジェクト code に関連付けられた新しい関数オブジェクトを返します。 globals はこの関数からアクセスできるグローバル変数の辞書でなければなりません。
関数のドキュメント文字列、名前および __module__ はコードオブジェクトから取得されます。引数のデフォルト値やクロージャは NULL にセットされます。
関数オブジェクト op に関連付けられたコードオブジェクトを返します。
関数オブジェクト op に関連付けられたglobals辞書を返します。
関数オブジェクト op の __module__ 属性を返します。 これは普通はモジュール名の文字列が入っていますが、Python コードから 他のオブジェクトをセットされることもあります。
関数オブジェクト op の引数のデフォルト値を返します。引数のタプルか NULL になります。
関数オブジェクト op の引数のデフォルト値を設定します。 defaults は Py_None かタプルでなければいけません。
失敗した時は、 SystemError を発生し、 -1 を返します。
関数オブジェクト op に設定されたクロージャを返します。 NULL か cell オブジェクトのタプルです。
関数オブジェクト op にクロージャを設定します。 closure は、 Py_None もしくは cell オブジェクトのタプルでなければなりません。
失敗した時は、 SystemError を送出し、 -1 を返します。