Python.use(better) #def: 関数 -- 関数オブジェクト

記事一覧 Python.use(better)《Python3.1》

def: 関数 -- 関数オブジェクト

《著》森こねこ、小粒ちゃん+∞《監修》小泉ひよ子とタマゴ倶楽部
第0版♪2001/03/02 ● 第1版♪2003/05/25 ● 第2版♪2004/06/01 ● 第3版♪2009/02/28

「関数」に関する基本的な理解を深めます。
※ Python1.5 で作成した例題を、Python3.1 で再構成しました。

関数:関数オブジェクト

関数も「オブジェクト」として、他のオブジェクトと同等に扱えます。すると、

  • 任意の「インスタンスオブジェクト」が、特定の「クラス」に属するように、
  • 任意の「関数オブジェクト」も、特定の「クラス」に属します。

組み込み関数:dir

>>> f = add
>>> dir(f)
['__annotations__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__globals__', '__gt__', '__hash__', '__init__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']

任意のオブジェクトに関する属性リストが得られます。すると、関数オブジェクト f には、

  • 有効な属性 __class__, __doc__, __name__ などが含まれるのが分かります。

組み込み関数:type

>>> type(f)

任意のオブジェクトに関する型情報が得られます。すると、関数オブジェクト f は、

  • その型(クラス)が function だと分かります。
    
属性 __class__ を参照すると、そのインスタンスが属するクラスが得られます。
  • 関数オブジェクト f のクラスが function だと分かります。
つまり、関数オブジェクト f は、クラス function のインスタンスです。

関数:名前

    
'add'
属性 __name__ を参照すると、関数の名前を表わす文字列が得られます。

関数:文書化文字列

    def add(a,b):
        "implement the binary arithmetic operations"
        return a+b
関数の本体の先頭行には、文書化文字列を記述できます。
    
'implement the binary arithmetic operations'
属性 __doc__ を参照すると、文書化文字列として記述した内容が得られます。
  • 何も記述していないと(空文字列 "" ではなく)None が得られます。

組み込み関数:help

>>> help(add)
Help on function add in module __main__:

add(a, b)
    implement the binary arithmetic operations

>>> 
任意のオブジェクトに関するヘルプ情報を出力します。すると、関数オブジェクト add には、
  • 関数名/引数に関する情報(シグネチャー)に続いて、
  • 文書化文字列として記述した内容が含まれます。
》こちらに移動中です《TOP

関連記事

Last updated♪2009/12/09