Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの無名関数(ラムダ式)とは?基本構文と実用的な使い方をわかりやすく解説

Pythonにおける無名関数とは

Pythonにおける無名関数(匿名関数)とは、その名のとおり「関数名を持たない関数」のことです。通常の関数は def キーワードを使って定義しますが、無名関数は lambda キーワードを使って定義します。このため、無名関数は「ラムダ関数」あるいは「ラムダ式」とも呼ばれています。

ラムダ式の基本的な構文

ラムダ式は次のような形式で記述します。

lambda 引数: 式

引数を受け取り、コロン(:)以降の式の評価結果を自動的に返り値として返します。return 文を書く必要がない点が特徴です。

# 通常の関数定義
def square(x):
    return x * x

# 同じ処理をラムダ式で記述
square_lambda = lambda x: x * x

print(square(5))        # 出力: 25
print(square_lambda(5)) # 出力: 25

無名関数が活躍する場面

ラムダ式は、sorted()map()filter() など、関数を引数として受け取る高階関数と組み合わせることで真価を発揮します。その場でしか使わない簡単な処理を、わざわざ def で名前付き関数として定義せずに済むため、コードが簡潔になります。

例えば、タプルのリストを2番目の要素(p[1])を基準にソートする場合は、次のようにラムダ式を key 引数に渡します。

points = [(1, 2), (13, -3), (9, 10), (4, 1)]
result = sorted(points, key=lambda p: p[1])
print(result)

このコードを実行すると、以下の出力が得られます。

C:/Users/TutorialsPoint1/~.py
[(13, -3), (4, 1), (1, 2), (9, 10)]

ラムダ式を使う際の注意点

  • 本体には単一の式しか書けません。 if文やfor文のような複数文の処理は記述できないため、複雑なロジックには通常の def 関数を使用しましょう。
  • 可読性を優先しましょう。 PEP 8では、ラムダ式を変数に代入して名前付き関数のように使うことは推奨されていません。名前が必要な場合は def で定義するのがベストプラクティスです。
  • 一時的な利用に適しています。 高階関数の引数として渡すなど、その場限りの小さな処理に使うことでコードの意図が明確になります。

まとめ

Pythonの無名関数は lambda キーワードで定義される名前のない関数であり、簡単な処理を一行で記述できる便利な機能です。特に sorted() のような高階関数と組み合わせることで、簡潔かつ読みやすいコードを実現できます。ただし、複雑な処理や再利用する関数には通常の def を使うという使い分けを心がけましょう。

  1. Pythonのclose()関数とは?役割と正しい使い方を解説

    Pythonの close() 関数は、開いたファイルを閉じるために使用されるメソッドです。ファイル操作が完了したら必ず呼び出すべき、重要な関数の一つです。 close()関数の基本的な使い方 f = open(my_file, r+) my_file_data = f.read() f.close() 上記のコードでは、「my_file」を読み書きモード(r+)で開き、読み込んだデータを変数 my_file_data に格納した後、f.close() を呼び出してファイルを閉じています。 なぜファイルを閉じる必要があるのか ファイルを開くと、オペレーティングシステム(OS)はそのファイル

  2. Pythonの名前空間とは?仕組みとスコープの関係をわかりやすく解説

    Pythonにおける名前空間の基本名前空間(namespace)とは、変数名とオブジェクトを対応付ける仕組みであり、スコープ(名前の有効範囲)を実現するための基盤となるものです。Pythonでは、パッケージ、モジュール、クラス、関数、メソッドなど、それぞれが独自の「名前空間」を持ち、その中で変数名が解決されます。名前空間の生成と破棄関数やモジュール、パッケージが評価されて実行が始まると、そのための新しい名前空間が作成されます。これは「評価コンテキスト」と捉えると理解しやすいでしょう。そして、関数などの実行が終了すると、その名前空間は破棄され、そこに含まれていた変数も一緒に消えます。さらに、ロー