【初心者向け】Pythonの無名関数(lambda)の基本と使い方を徹底解説
Pythonの無名関数(ラムダ式)とは
Pythonでは、通常の関数のように def キーワードを使って宣言しない関数を「無名関数(匿名関数)」と呼びます。小さな無名関数を作成するには、lambda キーワードを使用します。
- ラムダ式は任意の数の引数を受け取ることができますが、返せる値は1つの式の評価結果だけです。文(コマンド)や複数の式を含めることはできません。
- ラムダは「式」しか記述できないため、
printの呼び出しを直接無名関数として定義することはできません。 - ラムダ関数は独自のローカル名前空間を持ち、アクセスできるのは引数リスト内の変数とグローバル名前空間の変数のみです。
- ラムダは一見すると「1行バージョンの関数」に見えますが、CやC++のインライン関数(呼び出し時のスタック確保を省略してパフォーマンスを高める仕組み)とはまったく別のものです。あくまで簡潔に関数オブジェクトを定義するための構文です。
構文
ラムダ関数の構文は、次のようにたった1つのステートメントで構成されます。
lambda [arg1 [,arg2,.....argn]] : expression
コロン(:)の左側に引数を、右側に戻り値となる式を記述します。式の結果が自動的に返されるため、return は不要です。
使用例
以下は、ラムダ形式の関数がどのように動作するかを示す基本的な例です。
#!/usr/bin/python3
# ラムダで関数を定義
sum = lambda arg1, arg2: arg1 + arg2
# sum を関数として呼び出す
print("Value of total :", sum(10, 20))
print("Value of total :", sum(20, 20))
実行結果
上記のコードを実行すると、次のような結果が出力されます。
Value of total : 30
Value of total : 40
ラムダの実用的な使いどころ
ラムダは、短い処理をその場で渡したい場面で特に威力を発揮します。代表的な例が sorted() の key 引数や、map()・filter() との組み合わせです。
# 各要素の2乗の値を基準にリストをソート
data = [3, 1, 4, 1, 5]
result = sorted(data, key=lambda x: x ** 2)
print(result) # [1, 1, 3, 4, 5]
このように、わざわざ def で名前付き関数を定義するほどでもない簡単な処理を、1行でスマートに記述できるのがラムダ式の大きなメリットです。ただし、複雑なロジックになる場合は可読性を優先して、通常の def による関数定義を使うことをおすすめします。
-
PHPの無名関数(クロージャ・ラムダ)の基本と実践的な使い方
はじめに:無名関数とは?無名関数(匿名関数)とは、開発者が名前を付けずに定義する関数のことです。このような関数はクロージャやラムダ関数とも呼ばれます。一度だけ使いたい処理がある場合や、その場限りの小さなロジックを記述したい場合に非常に便利です。特に「クロージャ」と呼ばれる場合、それは定義された環境(スコープ外の変数)を閉じ込めて保持できる無名関数を指します。外部の変数にアクセスする際には use キーワードを指定します。無名関数の最も一般的な用途は、インラインでコールバック関数を作成することです。基本構文$var = function ($arg1, $arg2) { return $val;
-
【Python】Tkinterのボタンcommandでラムダ式を使う方法
ラムダ関数(Pythonでは「匿名関数」とも呼ばれます)は、TkinterでGUIアプリケーションを構築する際に非常に便利な機能です。ラムダを使うことで、コールバック関数へ複数のデータや引数を渡すことが可能になります。ラムダは任意の関数の中で、式に対する匿名関数として記述できます。特にボタンのcommandオプションでは、ラムダを利用してコールバック関数にデータを渡すのが定番のテクニックです。サンプルコードここでは、複数のボタンを持つ簡単なアプリケーションを作成します。各ボタンのcommandにはラムダ関数を定義し、クリックされたボタン固有の値を共通のコールバック関数へ渡します。#Import