カテゴリ: Python 更新日: 2026/03/07

Pythonの匿名関数(lambda)と通常の関数の違いを比較!使い分けガイド

Pythonの匿名関数(lambda)と通常の関数の違いを比較!使い分けガイド
Pythonの匿名関数(lambda)と通常の関数の違いを比較!使い分けガイド

先生と生徒の会話形式で理解しよう

生徒

「Pythonでlambdaっていう書き方を見たんですけど、普通の関数と何が違うんですか?」

先生

lambda匿名関数と呼ばれていて、その場で簡単に関数を作る方法なんです。通常の関数と違って名前を付けなくても使えます。」

生徒

「じゃあ、普通のdefで作る関数はいらないんですか?」

先生

「いえ、状況によって使い分けが大事です。今からlambdaと通常の関数の違いと使いどころを詳しく見ていきましょう。」

1. 匿名関数(lambda:ラムダ式)とは?

1. 匿名関数(lambda:ラムダ式)とは?
1. 匿名関数(lambda:ラムダ式)とは?

匿名関数とは、その名の通り「名前を付けずに定義できる関数」のことです。Pythonではlambda(ラムダ)というキーワードを使って記述するため、一般的に「ラムダ式」とも呼ばれます。

プログラミング初心者の方にとって、関数を作るにはdefを使って名前を決めて……という手順が当たり前に感じるかもしれません。しかし、lambdaを使えば、わざわざ名前を付けるほどでもない「ちょっとした計算」を、その場ですぐに実行できます。

基本的な書き方のルールは以下の通りです。

  • lambda 引数: 処理内容(戻り値)

例えば、「受け取った数に10を足す」という非常にシンプルな処理をlambdaで書くと、以下のようになります。変数plus_tenに代入することで、後から呼び出すことも可能です。


# lambdaを使って「10を足す」関数を作成
plus_ten = lambda x: x + 10

# 実行して結果を表示
print(plus_ten(5))  # 出力: 15

このように、lambda「1行で完結する」「使い捨ての処理」をスマートに記述するのに非常に向いています。コードが短くなるだけでなく、直感的に何をしているかが分かりやすくなるというメリットがあります。

2. 通常の関数(def)とラムダ式の違い

2. 通常の関数(def)とラムダ式の違い
2. 通常の関数(def)とラムダ式の違い

Pythonで処理をまとめる際、最も一般的なのがdefキーワードを使った「通常の関数」です。これに対して、lambda(ラムダ式)は「名前を付けるまでもない、ちょっとした計算」に向いています。

通常の関数(def)の特徴

defは、いわば「再利用可能なレシピ」をしっかり保存するイメージです。処理が複数行にわたる場合や、後から何度も呼び出して使いたい場合に適しています。また、プログラミング未経験の方にとっても、どこからどこまでが関数の処理なのかが視覚的にわかりやすいのがメリットです。


# 通常の関数で「2つの数字を足す」処理を作る
def add(x, y):
    return x + y

# 作った関数を呼び出す(実行する)
print(add(3, 5))  # 出力結果: 8

ラムダ式(lambda)との比較

比較すると、lambdaは1行で簡潔に結果を返せるためコードがスッキリしますが、複雑な条件分岐(もし〜なら、といった処理)や、長い計算には向きません。一方で、defは「もしAならB、そうでなければC」といった複雑なロジックを自由に盛り込むことができます。

まずは「しっかり作り込みたい時はdef」「使い捨ての簡単な計算はlambda」という使い分けから覚えていきましょう。

3. 使い分けの目安

3. 使い分けの目安
3. 使い分けの目安
  • lambda:短い一時的な処理(例:ソートのキー指定、簡単な計算)
  • def:複雑な処理、再利用する関数、大量のコードを含む場合

例えば、リストを値の長さでソートするときにlambdaが便利です。


words = ["apple", "banana", "cherry"]
words.sort(key=lambda x: len(x))
print(words)  # 出力: ['apple', 'cherry', 'banana']

4. 実用例:mapとlambdaの組み合わせ

4. 実用例:mapとlambdaの組み合わせ
4. 実用例:mapとlambdaの組み合わせ

lambdamap()filter()sorted()などの関数と組み合わせると便利です。


numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x ** 2, numbers))
print(squared)  # 出力: [1, 4, 9, 16, 25]

このように、わざわざdefで関数を作らず、その場で簡潔に記述できます。

5. lambdaの制限と注意点

5. lambdaの制限と注意点
5. lambdaの制限と注意点

lambdaには以下の制限があります。

  • 1行でしか書けない(複数行の処理不可)
  • 条件分岐や例外処理は基本的に使いにくい
  • コードの可読性が下がる場合がある

無理にlambdaを使うと、後でコードを読んだときに分かりにくくなることがあります。

6. 通常関数を選ぶべきケース

6. 通常関数を選ぶべきケース
6. 通常関数を選ぶべきケース

複雑な処理や、他の場所からも何度も呼び出す予定がある処理はdefを使いましょう。


def process_numbers(numbers):
    result = []
    for n in numbers:
        if n % 2 == 0:
            result.append(n * 2)
        else:
            result.append(n)
    return result

print(process_numbers([1, 2, 3, 4]))

[1, 4, 3, 8]

7. まとめると

7. まとめると
7. まとめると

lambdaは短く簡単な処理に、defは複雑で再利用する処理に向いています。両方を適材適所で使うことで、Pythonのコードはより効率的で読みやすくなります。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
New1
Python
Pythonでデータベースの接続プールを使う方法を徹底解説!初心者向けPythonデータベース接続プール入門
New2
Python
Pythonの例外チェーンを完全ガイド!初心者でもわかるfrom句を使ったエラーハンドリング
New3
PHP
PHPのCSVファイルの読み書きと文字列処理を基礎から解説!初心者向けガイド
New4
PHP
PHPのメモリ管理と変数の破棄方法をやさしく解説!初心者でもわかるunsetの使い方
人気記事
No.1
Java&Spring記事人気No1
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
No.2
Java&Spring記事人気No2
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
No.3
Java&Spring記事人気No3
Python
Pythonのコンストラクタ(__init__)の使い方!初心者でもわかるオブジェクトの初期化
No.4
Java&Spring記事人気No4
PHP
PHPのデバッグ方法を完全ガイド!初心者でもわかるvar_dump・print_r・error_log
No.5
Java&Spring記事人気No5
PHP
PHPの特殊文字とエスケープ処理を完全ガイド!初心者向けにhtmlspecialcharsとhtmlentitiesをやさしく解説
No.6
Java&Spring記事人気No6
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.7
Java&Spring記事人気No7
PHP
PHPのfor, while, do-whileループの使い方を完全ガイド!初心者でもわかる繰り返し処理
No.8
Java&Spring記事人気No8
Python
Pythonの書き方を基本から解説!はじめてのPythonプログラム