Pythonのラムダ式と通常の関数(def)の違いを徹底解説!初心者でもわかる書き方と使い分け
先生と生徒の会話形式で理解しよう
生徒
「先生、Pythonのラムダ式ってよく聞くんですけど、普通の関数と何が違うんですか?」
先生
「いい質問ですね。Pythonでは、関数を作る方法が主に2つあります。1つはdefキーワードを使う通常の関数、もう1つはlambdaを使うラムダ式です。」
生徒
「なるほど…でも、どうやって使い分けるんですか?」
先生
「それでは、具体的な違いや使い方を分かりやすく説明していきましょう!」
1. ラムダ式と通常の関数とは?
Pythonで関数を作る方法は主に2種類あります。通常の関数はdefを使って定義し、複数行の処理や複雑な計算が可能です。一方、ラムダ式はlambdaを使って、1行で簡単に書ける「無名関数(名前を付けない関数)」を作ります。
無名関数というのは、その名の通り関数に名前を付けずに、その場だけで使う関数のことです。例えば、お菓子を配るときに「ちょっと持ってて」と一時的に友達に渡すような感覚です。
2. 通常の関数(def)の基本構文
通常の関数は、以下のようにdefキーワードで定義します。複数行の処理や条件分岐も書けます。
def add_numbers(a, b):
return a + b
result = add_numbers(3, 5)
print(result)
8
このように、通常の関数は名前を付けて何度も呼び出せるのが特徴です。
3. ラムダ式(lambda)の基本構文
ラムダ式は、1行で簡単な処理を行う関数を作るときに使います。構文は以下のようになります。
lambda 引数: 戻り値
例えば、2つの数を足すラムダ式は次のように書けます。
add_numbers = lambda a, b: a + b
print(add_numbers(3, 5))
8
ラムダ式は1行で書ける反面、複数行や複雑な処理には向きません。
4. ラムダ式と通常の関数の違い
| 項目 | 通常の関数(def) | ラムダ式(lambda) |
|---|---|---|
| 名前 | 必ず名前を付ける | 名前を付けなくても使える |
| 処理の長さ | 複数行OK | 1行のみ |
| 可読性 | 長い処理でも分かりやすい | 短い処理向き |
| 利用例 | 大規模な関数、再利用する関数 | 一時的な関数、簡単な処理 |
5. 実際の比較例
同じ処理を通常の関数とラムダ式で書いてみましょう。
# 通常の関数
def square(x):
return x * x
print(square(4))
# ラムダ式
square_lambda = lambda x: x * x
print(square_lambda(4))
16
16
結果は同じですが、ラムダ式は短く書けるのが特徴です。
6. どちらを使うべきか?
基本的には、複雑な処理や長い関数はdefで書き、一時的で短い処理はlambdaを使います。例えば、リストの並べ替えや一時的な計算にはラムダ式が便利です。
numbers = [5, 2, 9, 1]
numbers.sort(key=lambda x: x)
print(numbers)
[1, 2, 5, 9]
このように、ラムダ式は「その場限りの小さな関数」として非常に役立ちます。