【Python】無名関数 lambda(ラムダ式)の基本 – サンプルコード付

無名関数(匿名関数)は文字通り名前のない関数で、一度きりの使い捨ての関数として使います。無名関数を使うと処理を簡潔に書けたり、グローバル・スコープの関数(オブジェクト)を生成せずに済むといったメリットがあります。

JavaScriptでは必須中の必須というほど無名関数は多用されますし、PHPでもWordPressのadd_filterやadd_actionなど無名関数はよく使われます。

JavaScriptやPHPと同様にPythonでも無名関数を使うことができます。ここではサンプルコードをもとにPython3の無名関数について見ていきましょう。

lambda(ラムダ式)を使う

Ptyhonでは下記のようにlambdaにより無名関数を記述します。lambdaは「ラムダ」と読み、無名関数のことをラムダ式と呼ぶことがあります。

lambda 引数: 式

なお引数が複数ある場合には下記のようにコンマ区切りで指定します。

lambda 引数1, 引数2, 引数3: 式

サンプルコード

上記サンプルコードのようにlambda式では(def で定義する)通常の関数のように return を書く必要はありません。また引数に括弧をつけるのも不要なので簡潔に書くことができます。

※ Github にこのページのソースコードをアップしています。
https://github.com/toksan/python3_study/blob/master/lambda/example_lambda_basic.py

公式ドキュメント
https://docs.python.jp/3/reference/expressions.html#lambda

lambda式でifによる条件分岐をする

ラムダ式の中でもif/elseを使うことができます。上のサンプルの奇数判定をif/elseを使って書くと下記のようになります。

無名関数の使い道がわからない!

無名関数(ラムダ式)の基本を見てきましたが、def で定義する通常の関数より少しだけ記述が簡潔になる程度で、いまいち有用性や使い道がわからないかもしれません。それもそのはずで、無名関数は sorted() / map() / filter() といった組み込み関数と共に使うことで真価を発揮します。

次のコラムでは無名関数を組み込み関数 sorted() と共に使うサンプルをご紹介します。
[追記] 【Python】lambda式で辞書やリストをスマートに並び替える – サンプルコード付 に書きました。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です