用語比較
lambda式とdef関数の違い(単一の式・名前・return)
lambda式とdef関数の違いは、書ける中身と名前です。lambda式は単一の式しか書けない名前のない小さな関数で、def は文を複数書ける名前付きの関数です。ちょっとした関数をその場で渡すなら lambda、処理が増えるなら defと使い分けます。
Python 3 エンジニア認定基礎試験は、オライリー・ジャパン「Pythonチュートリアル」の掲載内容を出題範囲とし、第4章制御構造ツールは40問中9問です(2026-10-17確認)。公式チュートリアルのラムダ式の節は、lambda が名前のない小さな関数を生成し、構文上は単一の式に制限され、通常の関数定義の構文糖衣に過ぎないと述べています。
このページは、lambda a, b: a+b のような式を見て def との対応が曖昧な人と、list.sort() の key に渡す書き方を整理したい人を対象にしています。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。Python3エンジニア認定基礎試験の一次情報確認日: 2026-09-18。
結論
lambda式
名前のない小さな関数を生成する。本体は単一の式に限られ、その式の値が戻り値になる。
def関数
名前を付けて定義する関数。本体に複数の文を書け、戻り値は return 文で返す。
違いを表で確認
| 比較軸 | lambda式 | def関数 |
|---|---|---|
| 関数の名前 | 名前がない(関数オブジェクトの __name__ は <lambda>) | def の後ろに書いた名前が付く |
| 本体に書けるもの | 単一の式だけ | 複数の文を書ける |
| 戻り値の返し方 | 式の値がそのまま戻り値になる(return は書かない) | return 文で返す |
| 使う場面 | 関数オブジェクトが要求されている場所にその場で書く | 名前を付けて何度も呼び出す処理を定義する |
| 選択肢で探す語 | 名前のない、単一の式、ラムダ式、key に渡す | 名前、return、複数の文、ドキュメンテーション文字列 |
Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
どこで迷っているかを切り分ける
lambda a, b: a+b が何を表すか選べない人
二つの引数 a と b の和を返す関数です。def add(a, b): return a + b と同じ働きで、違いは名前がなく、return を書かない点です。
lambda の本体に代入や return を書けると考える人
本体は単一の式に制限されます。代入文や return 文は式ではないため書けず、実行するとSyntaxErrorになります。
list.sort() の key に lambda を渡す意味がわからない人
key には、各要素から並べ替えの基準を取り出す関数を渡します。lambda pair: pair[1] は、タプルの2番目の要素を基準にする小さな関数です。
具体例で使い分ける
例 1
同じ働きを lambda と def で書く
二つの数の和を返す関数を、lambda式と def の両方で書いて呼び出す場面です。
- Python 3.9 で実際に実行すると、lambda a, b: a + b を代入した add(1, 2) も、def add2(a, b): return a + b の add2(1, 2) も 3 を返しました。
- 関数オブジェクトの __name__ は、lambda式が <lambda>、def で定義した関数が add2 でした。type はどちらも function でした。
- 公式チュートリアルは、ラムダ形式は通常の関数定義に構文的な糖衣をかぶせたものに過ぎないと述べています。
結論: 働きは同じで、違いは名前の有無と、本体を式1つで書くかどうかです。
例 2
lambda式で関数を返し、取り囲むスコープの変数を使う
def make_incrementor(n): return lambda x: x + n で関数を作り、f = make_incrementor(42) を呼ぶ場面です。
- 実際に実行すると、f(0) は 42、f(1) は 43 でした。
- lambda式は、入れ子の関数定義と同様に、取り囲むスコープの変数 n を参照できます。
- これは公式チュートリアルのラムダ式の節にある例と同じ結果です。
結論: lambda式も外側の関数の変数を参照でき、関数を返す場面で使えます。
例 3
list.sort() の key に lambda を渡す
pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')] に pairs.sort(key=lambda pair: pair[1]) を実行する場面です。
- 実際に実行すると、pairs は [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')] になりました。
- 並べ替えの基準は各タプルの2番目の文字列で、'four'、'one'、'three'、'two' の順です。
- lambda の本体 pair[1] は式1つなので、lambda式で書けます。
結論: key には関数を渡します。基準が式1つで書けるなら lambda が使えます。
例 4
lambda の本体に return や代入を書く
lambda x: return x と lambda x: (y = x) を実行する場面です。
- 実際に実行すると、どちらも SyntaxError(invalid syntax)になりました。
- return 文も代入文も式ではなく、lambda式の本体は式に限られるためです。
結論: lambda式の本体には式しか書けません。文が必要なら def を使います。
問題文から答えを選ぶ手順
- 1
キーワードを見る
lambda なら lambda式、def なら通常の関数定義です。
- 2
本体が式1つかを確認する
式1つなら lambda でも書けます。複数の文や return が要るなら def です。
- 3
戻り値を求める
lambda は : の後ろの式の値が戻り値です。def は return 文の値です。
- 4
名前を確認する
lambda式自体に名前はありません。名前が要る場合は変数に代入するか、def で定義します。
試験での見分け方
- 1lambda式は名前のない小さな関数を生成する。
- 2lambda式の本体は単一の式に限られ、return 文や代入文は書けない。
- 3lambda式の値が戻り値になり、return は書かない。
- 4lambda式は、関数オブジェクトが要求されている場所ならどこでも使える。
- 5lambda式は通常の関数定義の構文糖衣で、取り囲むスコープの変数を参照できる。
誤答しやすい選択肢
lambda の本体に複数の文を書けると考える
修正: 本体は単一の式だけです。文が必要なら def を使います。
lambda の本体に return を書く
修正: return は書きません。式の値が自動的に戻り値になります。
lambda は def と違う種類のものを作ると考える
修正: どちらも関数オブジェクトを作ります。lambda は構文糖衣です。
list.sort() の key に lambda を渡せないと考える
修正: key には関数を渡せるので、lambda式も渡せます。
確認問題
Q1lambda a, b: a+b は何を表す?
答え: 二つの引数の和を返す、名前のない関数
公式チュートリアルが示す例です。def で書く場合の return a + b に当たる部分が、式として書かれています。
Q2lambda x: return x を実行するとどうなる?
答え: SyntaxError になる
lambda式の本体は式に限られ、return 文は書けません。式の値が戻り値になります。
Q3f = (lambda x: x * 2) のとき、f(3) の結果は?
答え: 6
lambda式の本体 x * 2 の値が戻り値になるので、3 * 2 = 6 です。
到達チェック
- lambda式が名前のない小さな関数を生成すると説明できる
- lambda式の本体が単一の式に限られることを言える
- lambda式に return を書かない理由を説明できる
- list.sort() の key に lambda を渡す書き方を読める
- lambda式と def の働きが同じになる例を書ける
関連ページで確認する
同じ資格で次に知りたいこと
- with文とopen()・close()の違い(ファイルを閉じる書き方)
with文を使う書き方と、open()のあとにclose()を自分で呼ぶ書き方の違いを、閉じられる時点、例外が起きたときの結果、閉じたあとに読んだときのエラー、Python 3.9 で実際に実行した出力、Python3エンジニア認定基礎試験での判断手順と確認問題まで解説します。
- 辞書内包表記とリスト内包表記の違い(Python 3 エンジニア認定基礎試験)
辞書内包表記とリスト内包表記の違いを、括弧とキー:値の書き方、結果の型、キーの条件、Python 3 エンジニア認定基礎試験での読み取り手順と確認問題まで、公式チュートリアルに沿って解説します。
- read()・readline()・readlines()の違い(ファイルの読み方)
read()・readline()・readlines()の違いを、戻り値の型、読む範囲、ファイル末尾での結果、Python 3.9 で実際に実行した出力、Python3エンジニア認定基礎試験での判断手順と確認問題まで解説します。
よくある質問
Qlambda式とdef関数の一番短い違いは?
lambda式は単一の式だけを書ける名前のない関数で、def は複数の文を書ける名前付きの関数です。
Qlambda式に return は書けますか?
書けません。本体は式に限られ、式の値が戻り値になります。
Qlambda式は外側の変数を使えますか?
使えます。入れ子の関数定義と同様に、取り囲むスコープの変数を参照できます。
QPython3エンジニア認定基礎試験の範囲ですか?
出題範囲はPythonチュートリアルで、第4章制御構造ツールが40問中9問です(2026-10-17確認)。公式チュートリアルのラムダ式の節に、単一の式に制限されることの説明があります。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: ミナト編集部(運営者情報を見る)
