Pythonの関数とは?defの書き方・引数・戻り値を解説

PR Python

Pythonの関数とは?defの書き方・引数・戻り値を解説

💡 この記事でわかること

  • 関数とは何か、なぜ使うのか
  • def を使った関数の定義と呼び出し方
  • 引数で値を渡す方法と、return で結果を返す方法
  • デフォルト引数・キーワード引数の使い方
  • 関数の中と外で変数が使える範囲(スコープ)

1. 関数とは?

関数とは、
👉 いくつかの処理をひとまとめにして、名前をつけたものです。

💡 同じような処理を何度も書く代わりに、関数として1回定義しておけば、名前を書くだけで何度でも呼び出せます。コードの重複が減り、修正も1か所で済むようになります。

実は、これまで使ってきたprint()len()input()なども、Pythonにあらかじめ用意された関数です。この記事では、それを自分で作る方法を見ていきます。


2. 関数の定義と呼び出し(def)

関数を作ることを「定義する」といい、defを使います。作った関数は、名前のうしろに()を付けて「呼び出す」と実行されます。

def hello():
    print("こんにちは")
    print("Pythonの関数です")

hello()   # ← 呼び出し。ここで中の処理が実行される
  • def 関数名():で定義を始める(行末の:を忘れない)
  • 関数の中身はインデントを1段下げて書く
  • 定義しただけでは実行されない。hello()呼び出して初めて動く

👉 Pythonの基本文法(インデント・コロンの書き方)についての記事はこちら


3. 引数 — 関数に値を渡す

関数名の()の中に変数名を書くと、呼び出すときに値を渡せます。この受け渡しする値を引数(ひきすう)といいます。

def greet(name):
    print(f"こんにちは、{name}さん")

greet("太郎")   # こんにちは、太郎さん
greet("花子")   # こんにちは、花子さん

引数は複数渡すこともできます。その場合はカンマで区切り、書いた順番どおりに対応します。

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

introduce("太郎", 20)   # 太郎さんは20歳です

👉 定義側で受け取る変数を「仮引数」、呼び出し側で実際に渡す値を「実引数」と呼びます。渡す個数が合っていないとエラー(TypeError)になります。


4. 戻り値(return)

returnを使うと、関数の処理結果を呼び出し元に返すことができます。返される値を戻り値といいます。

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

result = add(3, 5)
print(result)        # 8
print(add(10, 20))   # 30(戻り値を直接使うこともできる)

👉 returnが実行されると、そこで関数は終了しますreturnのあとに書いた処理は実行されません。

💡 returnを書かない関数は、None(値がないことを表す特別な値)を返しますprint()は画面に表示するだけで、戻り値はNoneです。「表示する」と「返す」は別物なので、混同しないよう注意しましょう。

関数の中では、if文やfor文も自由に使えます。

def judge(score):
    if score >= 60:
        return "合格"
    else:
        return "不合格"

print(judge(75))   # 合格
print(judge(40))   # 不合格

👉 Pythonのif文・for文・while文についての記事はこちら


5. デフォルト引数(省略できる引数)

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

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

greet("太郎")                # こんにちは、太郎さん(greetingは初期値)
greet("花子", "おはよう")     # おはよう、花子さん

👉 デフォルト引数は、必ず通常の引数よりもあとに書きますdef greet(greeting="...", name)のような順番はエラーになります。


6. キーワード引数(名前を指定して渡す)

呼び出すときに引数名=値の形で渡すと、順番を気にせず、どの引数に渡すかを明示できます。

def profile(name, age, city):
    print(f"{name} / {age}歳 / {city}")

# 順番どおり(位置引数)
profile("太郎", 20, "東京")

# 名前を指定(キーワード引数)。順番が違ってもよい
profile(city="大阪", name="花子", age=25)

💡 引数が多い関数では、キーワード引数で渡すとコードが読みやすくなります。どの値が何を表すのか、呼び出し側を見ただけで分かるためです。


7. 複数の値を返す

returnのうしろに値をカンマで並べると、複数の値をまとめて返せます。受け取る側も、カンマで区切って別々の変数に代入できます。

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

low, high = min_max([3, 1, 8, 5])
print(low)    # 1
print(high)   # 8

8. 変数のスコープ(関数の中と外)

👉 関数の中で作った変数は、その関数の中でしか使えません。この「変数が使える範囲」をスコープといいます。

def calc():
    total = 100   # calc の中だけで有効
    print(total)

calc()          # 100
print(total)    # NameError! 関数の外からは total を使えない

💡 関数の外に値を持ち出したいときは、グローバル変数に頼らずreturnで返すのが基本です。そうすることで、関数がどこに影響を与えるのかが分かりやすくなり、バグを減らせます。

def calc():
    total = 100
    return total

result = calc()
print(result)   # 100

9. 関数まわりの用語まとめ

用語意味
定義(def)関数を作ること
呼び出し作った関数を実行すること(関数名())
引数(ひきすう)関数に渡す値
戻り値関数がreturnで返す結果
デフォルト引数省略されたときに使われる初期値
キーワード引数呼び出し時に名前=値で渡す方法
スコープ変数が使える範囲(関数の中/外)

10. まとめ

  • def 関数名():で定義し、関数名()で呼び出す
  • 引数で値を渡し、returnで結果を返す
  • return がない関数はNoneを返す(「表示」と「返す」は別物)
  • デフォルト引数で省略可能に、キーワード引数で順番を気にせず渡せる
  • 関数の中の変数は外から使えない(スコープ)。持ち出すときは return

👉 「同じコードを2回書きそうになったら関数にする」と意識するだけで、プログラムがぐっと整理されます。まずは引数1つ・return1つの小さな関数から作ってみましょう。

-Python
-, , , ,