4267000_s


本記事では、pythonのlambda(ラムダ式、無名関数)の使い方を紹介していきます。



lambda(ラムダ式、無名関数)とは


Pythonでは一般的に関数を定義するときは、def文を使用します。

しかし、関数には通常の関数の他に無名関数というものが存在します。

無名関数とは、その名前の通り、名前を持たない関数で、関数をその場に定義することができます。

pythonではこの無名関数を書くためにlambda(ラムダ式)というキーワードを使います。



lambdaの使い方


def文を使用して入力値の2倍の値を返す関数は以下のように書くことができます。

def calcDouble(num):
    return num*2

if __name__ == "__main__":
    num = calcDouble(5)


これをlambda式で書くと以下のように書くことができます。

if __name__ == "__main__":
    num = (lambda num: num*2)(5)


ここで「lambda num:」というのが「def calcDouble(num):」に相当する部分です。

そして「:」の区切りのあとに処理を書くのが、lambda式の使い方になります。



lambdaのメリット


lambdaを使うことのメリットは、リストなどの要素に対して何か特別な動作はしたいけれど、関数を定義するほどではないなというときにぱっと使うことができることです。

[1, 2, 3, 4]というリストの要素に対して先ほどdefで定義したcalcDouble関数を実行したいときは以下のように書けます。

def calcDouble(num):
    return num*2

if __name__ == "__main__":
    nums = [1234]
    nums = list(map(calcDouble, nums))


こんなことをするためだけに、毎回calcDouble関数のような関数を定義するのは面倒なのでlambdaを使います。

lambdaを使うと以下のように書くことができ、コードが先ほどよりすっきりしていますね。

if __name__ == "__main__":
    nums = [1234]
    nums = list(map((lambda num: num*2), nums))


lambdaは、map関数と合わせ使うことが多いです。
map関数の使い方については以下の記事をご覧ください。









lambdaのデメリット


lambdaを使うことのデメリットはコードの可読性が悪くなることです。

コードは基本的に他人が読めるように書かなければならないので、処理が複雑な関数などはlambdaを使わずにdefを使って定義するようにしましょう。
(他人が読めないコードは自分が読み返すときにも分かりづらく公開することになります)



まとめ


lambdaを使うことでコードが簡潔に書くことができることが分かりました。

ただ、lambdaには可読性が下がるというデメリットもあるため、状況を判断して使用するようにしましょう。