関数オブジェクト

オブジェクトとしての関数

pythonは関数も変数に入れてオブジェクトとして扱うことができます。

サンプルで見てみましょう。

def sample_function():

    text = 'sample'
    print(text)
    return '戻り値'


text = sample_function() # 通常の呼び出し
print(text)

f = sample_function # 関数オブジェクトとして変数fに格納

text = f() # 関数オブジェクトを実行
print(text) # 戻り値も取得できる

1行目から簡単な関数が定義されています。8行目9行目では普通に関数を呼び出し、戻り値を取得して出力しています。

前述のとおり、関数をオブジェクトとして変数に格納することが可能で、11行目にそれを行っています。

13行目、14行目で実行、戻り値の出力を行っています。

また、関数宣言の引数として関数を渡すこともできます。

もうひとつ例を見てみましょう。

def param_func():
    return 'sample'

def sample_function(f):
    x = f()
    print(x)

sample_function(param_func)

8行目でsample_function関数を実行していますが、引数としてparam_func関数を指定しています。

sample_function関数内部の5行目でparam_func関数が実行されて、6行目の出力でそれが確認できます。