タグ: def

  • 【初心者向け】Pythonの関数(def)の使い方 — 作り方・引数・戻り値をやさしく解説

    公開日: 2025-10-31|更新日: 2025-10-31

    関数はプログラムを整理し、再利用性を高める重要な仕組みです。この記事では、
    def を使った関数定義の基本から、
    引数・戻り値・デフォルト引数・スコープまで、初心者向けにやさしく解説します。
    コピペで動くサンプルと練習問題付き。

    1. 関数とは?

    関数は「名前付きの処理ブロック」です。何度も使う処理をまとめておくことで、コードが読みやすく、保守しやすくなります。

    例:同じ計算を何度も書かずに、関数名を呼び出すだけで処理できる。

    2. 関数の定義(基本)

    関数は def 関数名(引数): の形で定義します。定義後、関数名() で呼び出します。

    # 基本形
    def hello():
        print("Hello, Python!")
    
    hello()  # 呼び出し

    出力:

    Hello, Python!

    3. 引数(位置引数・キーワード引数)

    関数に値を渡す方法には位置引数とキーワード引数があります。

    位置引数

    def add(a, b):
        print(a + b)
    
    add(2, 3)  # 5

    キーワード引数

    def greet(name, message):
        print(f"{name}さん、{message}")
    
    greet(name="太郎", message="こんにちは")

    4. デフォルト引数と可変長引数

    デフォルト引数

    def greet(name="ゲスト"):
        print(f"ようこそ、{name}さん!")
    
    greet()         # デフォルトを使う
    greet("花子")   # 引数を渡す

    可変長引数(*args, **kwargs)

    def func(*args, **kwargs):
        print("args:", args)
        print("kwargs:", kwargs)
    
    func(1, 2, a=3, b=4)

    出力:

    args: (1, 2)
    kwargs: {'a': 3, 'b': 4}

    5. 戻り値(return)の使い方

    関数は結果を返すことができます。return で値を返し、呼び出し側で受け取ります。

    def square(x):
        return x * x
    
    result = square(5)
    print(result)  # 25

    注意:return がない関数は None を返します。

    6. 変数のスコープ(localとglobal)

    関数内で定義した変数は基本的にローカル(その関数の中だけで有効)です。外側の変数を変更したい場合は注意が必要です。

    x = 10
    
    def foo():
        x = 5  # これはローカル変数
        print("inside:", x)
    
    foo()
    print("outside:", x)

    出力:

    inside: 5
    outside: 10

    どうしてもグローバル変数を関数内で変更したい場合は global を使いますが、可読性が下がるので注意。

    7. lambda(無名関数)とは

    短い関数をその場で作るときに使います。通常は def を使う方が分かりやすいですが、簡単な処理のときに便利です。

    # lambda の例
    square = lambda x: x * x
    print(square(4))  # 16
    
    # map と組み合わせる例
    nums = [1, 2, 3]
    squared = list(map(lambda x: x*x, nums))
    print(squared)  # [1, 4, 9]

    8. 練習問題(解答付き)

    問題1

    引数で受け取った数値のリストの合計を返す関数 sum_list を作ってください。

    解答(クリックで表示)
    def sum_list(nums):
        total = 0
        for n in nums:
            total += n
        return total
    
    print(sum_list([1,2,3,4]))  # 10

    問題2

    2つの引数(名前と年齢)を受け取り、挨拶文を返す関数を作ってください(年齢はデフォルトで0にする)。

    解答(クリックで表示)
    def greet(name, age=0):
        return f"{name}さんは{age}歳です"
    
    print(greet("太郎", 30))  # 太郎さんは30歳です
    print(greet("花子"))      # 花子さんは0歳です

    9. まとめと次に読む記事

    ポイントまとめ:

    • def で関数を定義する
    • 引数は位置引数・キーワード引数・デフォルト引数・可変長引数がある
    • return で結果を返す
    • スコープに注意(ローカルとグローバル)

    関連記事:

    気に入ったらシェア・コメントお願いします!さらに練習問題や「デコレータ」「クロージャー」などの発展トピックも解説できます。依頼があれば記事化します。

    (この記事は初心者向けに簡潔化しています。実務的な設計や型ヒント、テストの話は別記事で解説予定です。)