Pythonインタラクティブガイド - ステップ3 関数 (7) - ラムダ式
- 本講座「Pythonインタラクティブガイド」は、手を動かしながらPythonプログラミングの基礎を学べる実践的な講座です。
- 「スタイルガイド」では、Pythonで読みやすくきれいなコードを書くためのガイドライン(PEP8)を主に紹介しています。
- 各コード例はその場で実行して結果を確認できます。
ページ再読み込みで元に戻るので、自由に試してみてください。
「ステップ3 関数」の続きです。
3.6. ラムダ式
これまでに、def
キーワードを使用した通常の関数について学びました。
Pythonには、関数をより簡潔に定義する方法としてラムダ式(lambda expression)があります。
3.6.1. ラムダ式の基本
ラムダ式は、無名関数(名前を持たない関数)を作成するための簡潔な構文です。
単純な処理を行う小さな関数を定義する場合に特に便利です。
lambda
キーワードの後にパラメータをカンマ(,
)区切りで指定し、コロン (:
) の後に式を記述します- ラムダ式は単一の式のみを含むことができます(複数の文や複数行の処理は使用できません)
- ラムダ式は式の評価結果を戻り値として返します(
return
文は不要かつ使用できません) - ラムダ式は直接利用することもできますが、基本的には変数に代入して利用します
2つの数値を入力してその合計値を返すラムダ式を作成しましょう。
解答例
年齢を入力し、その人が成人(18歳以上)かどうかをブール値で返すラムダ式を作成しましょう
解答例
3.6.2. 条件分岐を行う場合
ラムダ式は単一の式しか含むことができないため、条件分岐には三項演算子が使用されます:
上記の grade
関数では三項演算子をネストして複数回使用しています。
このような複雑な条件の場合は可読性が低下するため、通常の関数を使用しましょう。
文字列を引数として受け取り、その長さが10文字以上なら「長文」、そうでなければ「短文」と返すラムダ式を作成しましょう。
(文字列の長さはlen
関数を用いて取得できます)
解答例
3.6.3. 通常の関数との比較
ラムダ式と通常の関数は以下の点で異なります:
項目 | ラムダ式 | 通常の関数 |
---|---|---|
構文 | lambda キーワードを使用 |
def キーワードを使用 |
本体 | 単一の式のみ | 複数の文を含められる |
戻り値 | 評価結果が自動的に返る | return 文が必要 |
名前 | なし | あり |
docstring | 持てない | 持てる |
ラムダ式は、その他に関しては以下のように通常の関数と同様の性質を持ちます:
-
デフォルト引数を指定可能
-
可変長引数(
*args
パラメータ、**kwargs
パラメータ)を使用可能 -
外部変数の参照は定義時ではなく実行時に行われる (外部変数を参照するタイミング)
いつラムダ式を使うべきか
ラムダ式は以下のようなケースで特に有用です:
- シンプルな処理: 1行で表現できる単純な処理を行う関数の場合
- 一時的な使用: 一度だけ使用する小さな関数の場合
- 簡潔なコード: より短いコードを書きたい場合
逆に、以下のようなケースでは通常の関数定義を使うべきです:
- 複雑な処理: 複数の文や条件分岐が必要な処理の場合
- ドキュメント化: docstringによる説明が必要な場合
- 再利用性: 複数の場所で繰り返し使用する場合
まとめ
この節では、Pythonのラムダ式について以下のポイントを学びました:
- ラムダ式の基本: 無名関数を作成するための簡潔な構文
- 条件分岐を行う場合: 三項演算子を使用した条件分岐の実装
- 通常の関数との比較: ラムダ式と通常の関数の違いと使い分け
ラムダ式は、シンプルで一時的な関数を作成する場合に特に有用です。
しかし、複雑な処理や再利用性の高い関数は、通常の関数定義を使用するほうが適しています。
次回は、ラムダ式とよく組み合わせて使われる、関数を引数や戻り値とする「高階関数」について学びます。