Python関数の基礎:defとlambdaの使い方完全ガイド

Pythonの関数定義(def)と無名関数(lambda)の使い方を初心者向けに解説。引数、戻り値、スコープ、高階関数の実例付き。

Python関数deflambda戻り値引数2026/5/25

Pythonの関数とは?

Pythonの関数は、再利用可能なコードのブロックです。defキーワードで定義し、lambdaで簡潔な無名関数も作成できます。関数を使うことで、コードの整理、重複の削減、テストの容易さが向上します。

defによる関数定義

基本構文

def 関数名(引数リスト):
    """ドキュメンテーション文字列"""
    処理
    return 戻り値

実例:挨拶関数

def greet(name):
    """名前を受け取り挨拶を返す"""
    return f"こんにちは、{name}さん!"

print(greet("太郎")) # 出力: こんにちは、太郎さん!

引数の種類

1. 位置引数

引数の順序が重要。

def add(a, b):
    return a + b

print(add(3, 5)) # 8

2. キーワード引数

引数名を指定して渡す。順不同。

def introduce(name, age):
    return f"{name}は{age}歳です"

print(introduce(age=20, name="花子")) # 花子は20歳です

3. デフォルト引数

デフォルト値を設定。

def power(base, exp=2):
    return base ** exp

print(power(3)) # 9 (3^2) print(power(3, 3)) # 27 (3^3)

4. 可変長引数

*args:タプルとして受け取る。**kwargs:辞書として受け取る。

def sum_all(*args):
    return sum(args)

print(sum_all(1, 2, 3, 4)) # 10

def print_info(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}")

print_info(name="太郎", age=25)

戻り値

return文で値を返す。複数の値はタプルで返す。

def min_max(nums):
    return min(nums), max(nums)

min_val, max_val = min_max([3, 1, 4, 1, 5]) print(min_val, max_val) # 1 5

戻り値がない場合はNoneが返る。

スコープと変数の有効範囲

  • ローカル変数:関数内で定義。外部からアクセス不可。
  • グローバル変数:関数外で定義。関数内で読み取り可能だが、変更にはglobal宣言が必要。
  • x = 10  # グローバル変数
    

    def func(): global x x = 20

    func() print(x) # 20

    lambda(ラムダ式)

    無名関数を簡潔に書く。

    基本構文

    lambda 引数: 式
    

    <h1>通常の関数</h1>
    def add(a, b):
        return a + b
    

    <h1>lambda</h1> add_lambda = lambda a, b: a + b

    print(add_lambda(3, 5)) # 8

    高階関数での利用

    mapfiltersortedなどと組み合わせて使う。

    <h1>map: 各要素を2倍</h1>
    nums = [1, 2, 3, 4]
    doubled = list(map(lambda x: x * 2, nums))
    print(doubled)  # [2, 4, 6, 8]
    

    <h1>filter: 偶数だけ抽出</h1> evens = list(filter(lambda x: x % 2 == 0, nums)) print(evens) # [2, 4]

    <h1>sorted: タプルの2番目の要素でソート</h1> pairs = [(1, 'one'), (2, 'two'), (3, 'three')] sorted_pairs = sorted(pairs, key=lambda pair: pair[1]) print(sorted_pairs) # [(1, 'one'), (3, 'three'), (2, 'two')]

    高階関数とデコレータ

    関数を引数にとる、または関数を返す関数。

    簡単なデコレータ

    def decorator(func):
        def wrapper():
            print("関数実行前")
            func()
            print("関数実行後")
        return wrapper
    

    @decorator def hello(): print("Hello!")

    hello() <h1>出力:</h1> <h1>関数実行前</h1> <h1>Hello!</h1> <h1>関数実行後</h1>

    実践例

    計算機

    def calculator(a, b, operation):
        if operation == "add":
            return a + b
        elif operation == "subtract":
            return a - b
        elif operation == "multiply":
            return a * b
        elif operation == "divide":
            if b != 0:
                return a / b
            else:
                return "ゼロで割れません"
        else:
            return "不明な演算"
    

    print(calculator(10, 5, "add")) # 15

    リスト処理

    <h1>各要素を2乗し、5より大きいものだけ抽出</h1>
    nums = [1, 2, 3, 4, 5]
    result = list(filter(lambda x: x > 5, map(lambda x: x**2, nums)))
    print(result)  # [9, 16, 25]
    

    まとめ

  • defで名前付き関数、lambdaで無名関数を定義。
  • 引数は位置、キーワード、デフォルト、可変長を使い分ける。
  • 戻り値はreturnで返し、複数はタプルで。
  • スコープに注意し、globalは最小限に。
  • lambdaは高階関数と組み合わせて強力。
  • 関数をマスターして、Pythonプログラミングを効率化しましょう。