【本日のミッション】
Day19では「ネスト関数(関数の中の関数)」を学びました。
今日は少し名前が難しく聞こえる ラムダ式(無名関数)を学びます。
「いきなりラムダ式はむずかしい…」と感じる人がとても多い内容です。
そこでこの記事では、
-
まず 通常の関数 をしっかり確認
-
次に 同じ処理をラムダ式で書く
-
「何が違うのか」「いつ使うのか」を丁寧に説明
という流れで進めます。
目次
通常の関数の復習
これまで学んできた関数は、次の形でしたね。
def add(x, y): return x + y
処理の流れを確認
-
def add(x, y):-
add という 名前の関数 を作る
-
引数は x と y
-
-
return x + y-
x と y を足した結果を返す
-
実行
print(add(3, 5))
出力結果
8
関数は「名前をつけて」「何度も使える」処理 でしたね。
ラムダ式(無名関数)とは?
ラムダ式は、名前をつけずに、その場で使う小さな関数です。
「無名関数」と呼ばれる理由もここにあります。
通常の関数とラムダ式の比較
先ほどの add 関数を、ラムダ式で書き直すとこうなります。
実行
print(add_lambda(3, 5))
出力結果
8
ラムダ式の書き方を分解して理解しよう
lambda x, y: x + y
これは次の意味です。
-
lambda:ラムダ式を使いますよ、という合図 -
x, y:引数(関数に渡す値) -
::ここから処理内容 -
x + y:この結果が自動的に return される
ラムダ式には return は書きません。
通常の関数とラムダ式の違いまとめ
| 項目 | 通常の関数 | ラムダ式 |
|---|---|---|
| 名前 | 必要 | 不要(無名) |
| 書き方 | 複数行 | 1行のみ |
| return | 必要 | 書かない |
| 向いている処理 | 複雑・長い処理 | シンプルな処理 |
関数の引数に使う(ここが試験で重要)
まずは通常の関数を使った例
出力結果
[1, 2, 5, 9]
何をしているのか?
-
sorted()は並び替えをする関数 -
keyには 並び替えの基準となる関数 を指定 -
今回は「そのままの値」を返している
同じ処理をラムダ式で書く
出力結果
[1, 2, 5, 9]
なぜラムダ式が便利?
-
1回しか使わない関数のために
-
わざわざ
defで名前を付けなくていい
「その場限りの関数」=ラムダ式
練習問題
次のコードを実行するとどうなるでしょうか?
選択肢
A)
6 12
B)
3 12
C)
エラーになる
D)
6 3

解答
A)
6 12
解説
これは次の意味です。
-
引数 a
-
引数 b(デフォルト値は 2)
-
a と b を掛け算する
-
a = 3
-
b は省略 → デフォルト値 2
- 3 × 2 = 6
-
a = 3
-
b = 4(上書き)
- 3 × 4 = 12
👉 正解は
A)
6 12
✅ ポイント
-
ラムダ式は
lambda 引数: 式の形で定義する - return は書かない(式の結果が返る)
-
一行でシンプルな関数を書くときに便利
-
デフォルト引数やキーワード引数も利用可能
- 主に次の場面で使われる
-
sorted()
-
map()
-
filter()
-
-
複雑な処理にはdef を使う(読みづらくなるため)
次回予告
Day21では 「組み込み関数(len, type, range など)」 を学びます。
試験に頻出する標準関数の使い方を整理しましょう!
参考
Python 3 エンジニア認定基礎試験 – Odyssey CBT
Python3 エンジニア認定基礎試験 出題範囲と学習プラン
Python3 エンジニア認定基礎試験 練習問題 Day1:変数の基本
Python3 エンジニア認定基礎試験 練習問題 Day2:変数の型(int型とstr型)
Python3 エンジニア認定基礎試験 練習問題 Day3:算術演算子と代入演算子
Python3 エンジニア認定基礎試験 練習問題 Day4:文字列の操作
Python3 エンジニア認定基礎試験 練習問題 Day5:比較演算子と論理演算子
Python3 エンジニア認定基礎試験 練習問題 Day6:if文(条件分岐)
Python3 エンジニア認定基礎試験 練習問題 Day7:ループ処理(for文・while文)
Python3 エンジニア認定基礎試験 練習問題 Day8:break文とcontinue文
Python3 エンジニア認定基礎試験 練習問題 Day9:リスト(list)の基本
Python3 エンジニア認定基礎試験 練習問題 Day10:リストの操作(append,remove,len など)
Python3 エンジニア認定基礎試験 練習問題 Day11:リストのスライス(部分取り出し)
Python3 エンジニア認定基礎試験 練習問題 Day12:タプル(tuple)の基本
Python3 エンジニア認定基礎試験 練習問題 Day13:辞書(dict)の基本
Python3 エンジニア認定基礎試験 練習問題 Day14:集合(set)の基本
Python3 エンジニア認定基礎試験 練習問題 Day15:関数の定義と呼び出し
Python3 エンジニア認定基礎試験 練習問題 Day16:関数のデフォルト引数とキーワード引数
Python3 エンジニア認定基礎試験 練習問題 Day17:可変長引数(*args, **kwargs)
Python3 エンジニア認定基礎試験 練習問題 Day18:関数のスコープ(ローカル変数とグローバル変数)
Python3 エンジニア認定基礎試験 練習問題 Day19:ネスト関数(関数の中の関数)
Python3 エンジニア認定基礎試験 練習問題 Day20:ラムダ式(無名関数)
Python3 エンジニア認定基礎試験 練習問題 Day21:組み込み関数(len, type, range など)
Python3 エンジニア認定基礎試験 練習問題 Day22:組み込み関数(sum,max,min,sorted)
Python3 エンジニア認定基礎試験 練習問題 Day23:文字列と組み込み関数(len,str,int,float)
Python3 エンジニア認定基礎試験 練習問題 Day24:組み込み関数(abs, round, pow)
Python3 エンジニア認定基礎試験 練習問題 Day25:組み込み関数(sorted の応用と key 引数)
Python3 エンジニア認定基礎試験 練習問題 Day26:組み込み関数(enumerate, zip)
Python3 エンジニア認定基礎試験 練習問題 Day27:組み込み関数(map, filter, reduce)
Python3 エンジニア認定基礎試験 練習問題 Day28:組み込み関数(any, all)
Python3 エンジニア認定基礎試験 練習問題 Day29:組み込み関数(isinstance,issubclass)
Python3 エンジニア認定基礎試験 練習問題 Day30:組み込み関数(callable, eval)
Python3 エンジニア認定基礎試験 練習問題 Day31:組み込み関数(dir, help)
Python3 エンジニア認定基礎試験 練習問題 Day32:組み込み関数(id, hash)
Python3 エンジニア認定基礎試験 練習問題 Day33:組み込み関数(repr, format)
Python3 エンジニア認定基礎試験 練習問題 Day34:組み込み関数(globals, locals)
Python3 エンジニア認定基礎試験 練習問題 Day35:組み込み関数(vars, callable)
Python3 エンジニア認定基礎試験 練習問題 Day36:組み込み関数(reversed, slice)
Python3 エンジニア認定基礎試験 練習問題 Day37:組み込み関数(getattr, setattr, hasattr, delattr)
Python3 エンジニア認定基礎試験 練習問題 Day38:組み込み関数(eval, exec, compile)
Python3 エンジニア認定基礎試験 練習問題 Day39:組み込み関数(zip の応用・辞書との組み合わせ)
Python3 エンジニア認定基礎試験 練習問題 Day40:モジュールの基本(import と from の違い)
Python3 エンジニア認定基礎試験 練習問題 Day41:as(別名インポート)と import の仕組み
Python3 エンジニア認定基礎試験 練習問題 Day42:標準ライブラリ(math モジュールの基本)
Python3 エンジニア認定基礎試験 練習問題 Day43:標準ライブラリ(random モジュールの活用)
Python3 エンジニア認定基礎試験 練習問題 Day44:標準ライブラリ(datetime モジュールの使い方)
Python3 エンジニア認定基礎試験 練習問題 Day45:標準ライブラリ(os と sys)