Python 無名関数(ラムダ関数)

無名関数 Python入門
無名関数

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されています。

 

プログラミングは、とりあえず力業で記述して、思うように動くものができればよい、という考え方もありますが、あとあとのメンテナンスとかも考えると、できるだけシンプルに、わかりやすく書いておいた方が、結局は自分のためにもなります。

タイトルとURLをコピーしました