関数を変数に代入する方法を説明します。
pythonでは、関数はファーストクラスオブジェクトなので、変数に関数を代入することができます。
その他の、関数がファーストクラスオブジェクトであるから可能な処理についても説明します。例えば、 「関数を引数として渡す 」処理、「 関数をデータ構造(リスト)に格納する 」処理です。
ファーストクラスオブジェクトについては、第一級オブジェクト – Wikipediaをご確認ください。
また、下記記事により、pythonの関数がファーストクラスオブジェクトであることがわかります。
- The History of Python: First-class Everything pythonの生みの親のサイトです。
- 5. First-Class Functions – Fluent Python [Book] オライリーのサイトです。
関数を変数に代入
max_obj = max print(max_obj(3,5)) """出力 5 """
max関数を変数に代入しています。max関数を代入した変数をmax関数と同じように使用できていることがわかります
関数を引数として渡す
def add(a, b): return a+b def sub(a, b): return a-b def calc(func, a, b): ans = func(a, b) print(ans) calc(add, 2, 3) calc(sub, 2, 3) calc(max, 2, 3) """出力 5 -1 3 """
calc関数に3種類の関数を引数として渡しています。出力結果から、渡した関数を正常に使用できていることがわかります。
関数をデータ構造(リスト)に格納
l = [max, min] print(l[0](2,3)) print(l[1](2,3)) """出力 3 2 """
リストlのインデックス0の要素にmax関数、インデックス1の要素にmin関数を入れています。
l[0]とすることで、インデックス0の要素に入れたmax関数をコールしていることがわかります。
コメント