Python 入門

ホーム > 関数 > ラムダ (lambda) による匿名関数の作成

ラムダ (lambda) による匿名関数の作成

lambda (ラムダ式, lambda expression) を用いると、匿名関数 (anonymous function) を定義できます。

lambda 引数1, 引数2, ... , 引数n : 引数を使う式

lamdba によって匿名関数オブジェクトが定義できる、ということがどういうことか、def と比較することでみていきましょう。

まず例として、 def を用いて、足し算を行う add を定義します。

def add(x, y):
     return x + y
     
print add(1, 2)

実行結果は次のとおり。

3

次に lambda を用いて匿名関数オブジェクトを定義してそれを呼出します。

f = lambda x, y: x + y

print f(1, 2)

この実行結果は次のとおり。

3

deflambda の違い

上述のようにdef を使っても lambda を使っても同様に関数オブジェクトを作成して、 それを呼出すことができます。def と lambda の違いは次のとおりです。

  • lambda は式
    文 (statement) ではなく式 (expression) であることから、おのずと def とは出現場所が変わってきます。(def は文)
  • ラムダ式のボディ部は単一の式 (expression)
    def の場合はボディ部はステートメント・ブロックでしたが、ラムダ式の場合は単一の式がボディ部となります。

こうした違いから lambda を用いれば、次のように異なる関数定義を簡便に記述することが可能になります。

a = [ lambda x, y: x + y, lambda x, y: x * y ]

for f in a:
     print f(10, 5)

これの実行結果は次のとおりです。

15 
50

前者では 5 と 10 の足し算、後者では掛け算が行われた結果が出力されています。(for の使い方については、 ループに関する説明を見てください)

ホーム > 関数 > ラムダ (lambda) による匿名関数の作成