AI資格ドリル
資格を選ぶ↓

用語比較

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冊です。読んだ章は、このサイトの章別問題で確かめられます。

PR

ほかの資格を含む参考書・問題集の一覧を見る

どこで迷っているかを切り分ける

01

lambda a, b: a+b が何を表すか選べない人

二つの引数 a と b の和を返す関数です。def add(a, b): return a + b と同じ働きで、違いは名前がなく、return を書かない点です。

02

lambda の本体に代入や return を書けると考える人

本体は単一の式に制限されます。代入文や return 文は式ではないため書けず、実行するとSyntaxErrorになります。

03

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. 1

    キーワードを見る

    lambda なら lambda式、def なら通常の関数定義です。

  2. 2

    本体が式1つかを確認する

    式1つなら lambda でも書けます。複数の文や return が要るなら def です。

  3. 3

    戻り値を求める

    lambda は : の後ろの式の値が戻り値です。def は return 文の値です。

  4. 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 の働きが同じになる例を書ける

同じ資格で次に知りたいこと

よくある質問

Qlambda式とdef関数の一番短い違いは?

A

lambda式は単一の式だけを書ける名前のない関数で、def は複数の文を書ける名前付きの関数です。

Qlambda式に return は書けますか?

A

書けません。本体は式に限られ、式の値が戻り値になります。

Qlambda式は外側の変数を使えますか?

A

使えます。入れ子の関数定義と同様に、取り囲むスコープの変数を参照できます。

QPython3エンジニア認定基礎試験の範囲ですか?

A

出題範囲はPythonチュートリアルで、第4章制御構造ツールが40問中9問です(2026-10-17確認)。公式チュートリアルのラムダ式の節に、単一の式に制限されることの説明があります。

次に見る比較

執筆: ミナト編集部(運営者情報を見る)