Pythonではコードの記述をシンプルにするために、「無名関数」というものを使うことができます。
無名関数を使えば、関数をすっきりとシンプルに記述することができます。
きれいなソースコードを書くためにもちゃんと身に付けたいですね!
無名関数
下記の例は、いわゆる普通に、引数に対して足し算して返り値を返している簡単な関数tashizanです。
これを、()(かっこ)を書かないで、関数名のみで記述することもできて、関数名のみでかっこがついていないものを「関数オブジェクト」といいます。
「関数オブジェクト」は、変数のように他の変数に代入することができます。
上記の例では、関数tashizanを、関数tashizan_2に代入しています。
そして、関数tashizan_2に、引数2と5を入れてprintすると、2+5されて、7が返り値として表示されるようになっています。
printすると、tashizan_2にtashizanがちゃんと入っていることが確認できます。
ちなみに、関数オブジェクトは「lambda(ラムダ)」を使って、作成することができます。
ラムダを使って作る関数を「無名関数」や「ラムダ関数」と言います。
ラムダというと、ジャンプで連載していた約束のネバーランドのラムダ農園を思い出しますが、ラムダ関数とは関係ないと思いますw
無名関数(ラムダ関数)は、以下のように書きます。
一行で、シンプルに関数を定義して使うことができるので、ソースコードがスッキリしますね(・∀・)b
無名関数(ラムダ関数)の例
たとえば、こちらのように、普通の関数を定義して記述すると、
↑
このような感じで、4行のコードを書くことになりますが、無名関数を使うと、以下のように2行で同じことが表現できます。
シンプルなソースコードの方が、後で見返した時に可読性が上がりますし、スマートですね(・∀・)b
コールバック
関数の引数には、通常の値のほかに、関数オブジェクトを渡すことができます。
下記の例では、kansu関数の引数として、callbackという関数がコールバック関数として入っています。
そして、tashizan関数はただ引数を足し算するだけのかんたんな関数なのですが、これを、
kansu(3,4,tashizan)
として、第3引数として関数オブジェクト(tashizan)を渡すと、tashizan関数の引数として、
「3,4」
が渡されて、3+4された結果、「7」が返り値としてprintされているのがわかります。
更に、「無名関数」を使うと、上記の書き方と同じことを更にシンプルに記述できます。
上記の例では、
kansu(3,4,lambda a,b : a+ b)
として、無名関数を第3引数として渡しています。
結果として、a+b(3+4)が実行されて、返り値「7」がprintされています。
プログラミングは、とりあえず力業で記述して、思うように動くものができればよい、という考え方もありますが、あとあとのメンテナンスとかも考えると、できるだけシンプルに、わかりやすく書いておいた方が、結局は自分のためにもなります。