関数オブジェクトは関数定義で生成されます。関数に対する唯一の操作はそれをfunc(argument-list)のように呼び出すことです。
実際には2種類の関数オブジェクトがあります。それは組み込み関数とユーザ定義関数です。両方とも同じ操作(関数を呼び出すこと)をサポートしていますが、実装が異なるので別のオブジェクトタイプになっています
実装では2つの特別な読み出し専用属性を付加しています。 f.func_codeは関数のcode object (以下を参照)を、 f.func_globalsは関数のグローバルネーム空間として使われる辞書(mが関数fが定義されているモジュールであればm.__dict__と同じ)をあらわしています。