【Python 文法】関数の基本を徹底解説!defとreturnの使い方から引数の渡し方まで

未分類

はじめに:なぜPythonで関数を学ぶ必要があるのか?

Pythonの学習を進めていくと、徐々にコードが長くなってきたり、同じような処理を何度も書いていることに気づくことがあるでしょう。そんな悩みを解決してくれるのが「関数」です。

この記事では、Pythonプログラミングの基本であり、最も重要な要素の一つである「関数」について、初心者の方にも分かりやすく解説します。

この記事を読み終える頃には、以下のことができるようになります。

  • def を使って自分で関数を作成できる
  • return を使って関数から処理結果を受け取れる
  • 「引数」を使って関数に情報を渡し、より柔軟な処理ができる

関数を使いこなせると、コードが驚くほどスッキリし、開発効率も格段にアップします。ぜひこの機会にマスターしましょう!

Pythonの関数とは?

まず、関数とは**「一連の処理を一つにまとめたもの」**です。

数学の関数 y = f(x) をイメージすると分かりやすいかもしれません。x という値を入れると、f という処理が行われ、y という結果が返ってきます。

Pythonの関数もこれと似ていて、特定の名前を付けることで、その処理のまとまりをいつでも呼び出して使えるようになります。

関数を使う最大のメリット:コードの再利用と整理整頓

関数を使うことには、大きく分けて2つのメリットがあります。

  1. コードの再利用性向上: 同じ処理を何度も書く必要がなくなります。関数として一度定義しておけば、あとはその関数名を呼び出すだけで、いつでも同じ処理を実行できます。これにより、コード全体の記述量を減らせます。
  2. コードの可読性・保守性向上: 長いコードも、処理の単位で関数に分割することで、「何をしているのか」が非常に分かりやすくなります。例えば、「消費税を計算する」「ユーザー情報を取得する」といった具体的な名前の関数に分けることで、コードが整理され、後から見返したり、他の人が読んだりするのも楽になります。

Python関数の基本的な作り方(def)

それでは、早速関数の作り方を見ていきましょう。Pythonでは def というキーワードを使って関数を定義します。

def を使った関数の「定義」

関数の定義は、決まった書き方があります。

def 関数名(引数):
    # ここに実行したい処理をインデントして書く
    # ...
  • def: 関数を定義することを示すキーワードです。
  • 関数名: 自分で好きな名前を付けます。何をする関数なのか分かりやすい名前を付けましょう(例: say_hello, calculate_tax)。
  • (): この中に「引数(ひきすう)」を指定します。引数については後ほど詳しく解説します。引数がない場合でも () は必須です。
  • :: def 行の終わりにはコロン : を付けます。
  • インデントされたブロック: コロン : の後、インデント(字下げ)された部分が、その関数が実行する処理内容になります。

具体的なコードで見てみましょう。ここでは「Hello, Python!」と表示するだけの簡単な関数を定義します。

# 'say_hello' という名前の関数を定義する
def say_hello():
    print("Hello, Python!")

これで say_hello という名前の関数が作成されました。ただし、この時点ではまだ何も実行されません。関数は定義しただけでは動かず、「呼び出す」ことで初めて中の処理が実行されます。

作成した関数の「呼び出し」

関数を呼び出すのは非常に簡単です。**「関数名()」**と書くだけです。

# 'say_hello' という名前の関数を定義する
def say_hello():
    print("Hello, Python!")

# 関数を呼び出す
say_hello()

実行結果

Hello, Python!

このように、say_hello() と書くことで、def の中で定義した print("Hello, Python!") という処理が実行されました。これで何度でも同じ挨拶を表示できますね。

関数から値を受け取る(return)

先ほどの関数は、単にメッセージを表示するだけでした。しかし、多くの場合、関数で計算した結果や処理したデータを、呼び出し元で受け取って使いたい場面があります。その際に使うのが return です。

return の基本的な使い方

return を使うと、関数の処理を終了し、指定した値を呼び出し元に返すことができます。これを「戻り値(もどりち)」と呼びます。

例えば、2つの数値を受け取って足し算の結果を返す関数を作ってみましょう。

Python

def add(a, b):
    # aとbを足した結果を計算
    total = a + b
    # 計算結果を返す
    return total

# add関数を呼び出し、戻り値を変数resultに保存する
result = add(5, 3)

print(result)
Code language: PHP (php)

実行結果

8

add(5, 3) が実行されると、関数の中で total8 が代入され、return total によって 8 という値が返されます。その返された 8 が、変数 result に代入されているのです。

return が実行されると、その時点で関数の処理は終了します。return の後に処理を書いても実行されません。

def test_return():
    print("このメッセージは表示されます")
    return "ここで処理は終わり"
    print("このメッセージは表示されません")

result = test_return()
print(result)

実行結果

このメッセージは表示されます
ここで処理は終わり

【TIPS】複数の値を返すことも可能

return では、カンマ , で区切ることで複数の値を同時に返すことができます。この場合、戻り値はタプルという形式で返されます。

def get_min_max(numbers):
    # リスト内の最小値と最大値を返す
    return min(numbers), max(numbers)

# 関数を呼び出す
scores = [10, 85, 92, 34, 76]
min_score, max_score = get_min_max(scores)

print(f"最低点: {min_score}")
print(f"最高点: {max_score}")

実行結果

最低点: 10
最高点: 92

このように、戻り値を複数の変数で一度に受け取ることができ、非常に便利です。

引数の使い方をマスターしよう

次に関数の非常に重要な要素である「引数(ひきすう)」について学びましょう。引数を使うことで、関数に外部から情報を渡し、処理を柔軟に変えることができます。

引数とは?(仮引数と実引数)

少し専門的な用語が出てきますが、非常に重要なので覚えておきましょう。

  • 仮引数(かりひきすう): 関数を定義するときに () の中に書く変数のこと。関数の中で使うための仮の入れ物です。
  • 実引数(じつひきすう): 関数を呼び出すときに () の中に渡す具体的な値や変数のこと。
# ここでの name が「仮引数」
def greet(name):
    print(f"こんにちは、{name}さん!")

# ここでの "田中" が「実引数」
greet("田中")

greet 関数を呼び出すときに渡した "田中" という実引数が、greet 関数の name という仮引数に渡され、関数内で利用されています。

基本的な「位置引数」

引数は、渡す順番が重要になります。このように、書いた順番通りに値が渡される引数のことを「位置引数」と呼びます。

def introduce(name, age):
    print(f"私の名前は{name}です。年齢は{age}歳です。")

# 1番目の引数がnameに、2番目の引数がageに渡される
introduce("鈴木", 25)

実行結果

私の名前は鈴木です。年齢は25歳です。

もし順番を間違えると、意図しない結果になってしまいます。

# 引数の順番を間違えた例
introduce(30, "佐藤")

実行結果

私の名前は30です。年齢は佐藤歳です。

引数名を指定する「キーワード引数」

引数の順番を気にせず、「どの仮引数にどの値を渡すか」を明示的に指定する方法が「キーワード引数」です。仮引数名=値 の形で指定します。

def introduce(name, age):
    print(f"私の名前は{name}です。年齢は{age}歳です。")

# キーワード引数を使えば、順番を入れ替えてもOK
introduce(age=28, name="高橋")

実行結果

私の名前は高橋です。年齢は28歳です。

キーワード引数を使うと、引数がたくさんある場合でも、どの値が何に対応するのかが分かりやすくなり、コードの可読性が向上します。

事前に初期値を設定する「デフォルト引数」

関数を定義する際に、引数に初期値(デフォルト値)を設定しておくことができます。これを「デフォルト引数」と呼びます。

デフォルト引数を設定しておくと、関数を呼び出すときにその引数を省略することができます。省略された場合は、設定された初期値が使われます。

# country引数に初期値 '日本' を設定
def greet_user(name, country="日本"):
    print(f"こんにちは、{name}さん!({country}からお越しですね)")

# country引数を省略して呼び出す
greet_user("山田")

# country引数を指定して呼び出す
greet_user("John", "アメリカ")

実行結果

こんにちは、山田さん!(日本からお越しですね)
こんにちは、Johnさん!(アメリカからお越しですね)

country のように、頻繁には変わらないけれど、時には変更したいような引数に設定すると便利です。

(少し応用)覚えておくと便利な知識

最後に、関数をより便利に使うための応用的な知識を一つ紹介します。

関数の説明書「docstring」の書き方

docstring(ドキュメンテーション文字列)は、関数がどのような役割を持ち、どのように使うのかを説明するためのものです。

関数の定義の直下に、"""(トリプルクォーテーション)または ''' で囲んで記述します。

def add(a, b):
    """2つの数値を受け取り、その合計を返す関数。

    Args:
        a (int or float): 1つ目の数値。
        b (int or float): 2つ目の数値。

    Returns:
        int or float: 2つの数値の合計。
    """
    return a + b

# docstringを確認する方法
print(add.__doc__)

実行結果

2つの数値を受け取り、その合計を返す関数。

    Args:
        a (int or float): 1つ目の数値。
        b (int or float): 2つ目の数値。

    Returns:
        int or float: 2つの数値の合計。

help() 関数を使っても確認できます。

help(add)

複雑な関数を作る際には、後から自分や他の人が見ても分かるように、docstringを書いておく習慣をつけましょう。

まとめ

今回は、Pythonの「関数」について、基本的な定義の方法から引数の使い方までを解説しました。

  • 関数: 一連の処理をまとめたもので、def で定義する。
  • 呼び出し: 関数名() で定義した処理を実行できる。
  • return: 関数の処理結果(戻り値)を呼び出し元に返す。
  • 引数: 関数に情報を渡すための仕組み。位置引数、キーワード引数、デフォルト引数などがある。
  • メリット: コードの再利用性が高まり、可読性・保守性が向上する。

関数は、Pythonでプログラミングを行う上で避けては通れない、非常に重要な機能です。最初は難しく感じるかもしれませんが、実際に手を動かして色々な関数を作ってみることで、必ず理解が深まります。

この記事が、あなたのPython学習の一助となれば幸いです。

コメント

タイトルとURLをコピーしました