ラムダ関数を使用しない場合と、使用する場合で
どのくらいコードに違いがあるのか、
実際にコードを比較しながら紹介していきます。
ラムダ関数とは
ラムダ関数とは、関数を簡潔に書く手段です。
特徴は、以下の通りです。
- 関数定義を短縮
- 無名関数
- 即時に実行
詳しく説明していきますが、その前にコードを見たほうが
イメージが付きやすと思うので、コードから紹介します。
以下は、引数のnum
が偶数か奇数かを返してくれる関数です。
ラムダ関数を使用しない場合と使用した場合で、2通り用意しました。
# ラムダ関数を使用しない場合
def check_even(num):
if num % 2 == 0:
return "Even"
else:
return "Odd"
# ラムダ関数を使用した場合
check_even = lambda num: "Even" if num % 2 == 0 else "Odd"
ラムダ関数の特徴① 関数定義を短縮
記で紹介したラムダ関数を使用した場合と使用しない場合のコードをみてください。
ラムダ関数を使用しない場合は、check_even
関数を定義するのに、5行使用しています。
一方で、ラムダ関数を使用した場合は、check_even
関数を定義するのに、1行で済んでいます。
この関数を短く定義する手法が、ラムダ関数の1つ目の特徴です。
ラムダ関数の特徴② 無名関数
ラムダ関数は、無名関数とも呼ばれます。
通常の関数は、関数を定義する際、関数名が必要になります。
ラムダ関数は、関数でありながら、関数名が必要ありません。
実際のコードを使って説明します。
以下は、引数x
、y
の2つの数字を足した結果を返す関数を
ラムダ関数を使用した場合としなかった場合のコードです。
# ラムダ関数を使用しない場合
def add(x, y):
return x + y
# ラムダ関数を使用した場合
lambda x, y: x + y
ラムダ関数を使用しない場合は、関数名add
で定義していますが、
ラムダ関数を使用した場合は、何も関数名を定義していません。
このような関数名なしで、関数を定義できることもラムダ関数の特徴です。
ラムダ関数の特徴③ 即時に実行
ラムダ関数は、即時実行が可能です。
普通の関数は、関数を実行するまでに以下の2ステップが必要になります。
- 関数を定義
- 定義した関数を呼ぶ
ラムダ関数はこれら2つのステップを同時に実行できるのです。
これがラムダ関数の3つ目の特徴です。
ラムダ関数は、どう使っていくのでしょうか
詳しく紹介していきます。
ラムダ関数の使い方
ラムダ関数の使い方は以下の通りです。
lambda 引数: 処理
lambda
のあとに引数
、:
のあとに結果を返す処理
を記載します。
ラムダ関数でif文を使う
ラムダ関数は、if文を使って、条件分岐も可能です。
使い方は以下の通りです。
lambda 引数: 条件が真の場合の処理 if 条件式 else 条件が負の場合の処理
実際のコードも紹介します。
引数がborder変数の値よりも大きい場合にTrueを返し、小さい場合にFalseを返す関数を、
ラムダ関数で作成しています。
border = 5
check_border = lambda x: "True" if x >= border else "False"
check_border(8)
まとめ
ラムダ関数は、あるデータに対して、簡単な処理を加えたい場合によく使用します。
ラムダ関数を理解して、短く、わかりやすいスマートなコードを書いていきましょう!