引数と戻り値とは?Python初心者向けに違いや使い方をわかりやすく解説

プログラミング

プログラミングで関数を勉強すると、必ず登場するのが「引数」と「戻り値」です。

「引数とは何だろう?」「戻り値は何のために使うの?」「printとreturnは何が違うの?」と疑問に思っている人も多いのではないでしょうか。

引数と戻り値は、関数を便利に使うために欠かせない仕組みです。簡単にいうと、引数は関数に渡すデータ、戻り値は関数から受け取る処理結果です。

この記事では、高校の情報Ⅰを学習している人や、初めてPythonに触れる人に向けて、引数と戻り値の仕組みをサンプルコードと練習問題を使って解説します。

1. 引数と戻り値とは?

まずは、引数と戻り値の全体像を理解しましょう。

例えば、2つの数字を足す関数を考えます。

def add(a, b):    return a + bresult = add(10, 20)print(result)

実行結果:

30

このプログラムでは、10と20という数字を関数に渡し、足し算した結果の30を受け取っています。

引数と戻り値の仕組み

引数(入力)

10 と 20

関数 add()

10 + 20

渡された数字を使って計算

戻り値(出力)

30

このように、関数は外から受け取ったデータを利用して処理を行い、その結果を呼び出し元へ返すことができます。

ただし、すべての関数に引数と戻り値が必要なわけではありません。引数を受け取らない関数や、結果を明示的に返さない関数も作れます。

2. 引数とは?Pythonでの使い方

引数とは、関数に渡すデータのことです。

例えば、名前を受け取ってあいさつする関数を作ってみましょう。

def greeting(name):    print("こんにちは、" + name + "さん")greeting("山田")

実行結果:

こんにちは、山田さん

このプログラムでは、"山田" という文字列を greeting() 関数に渡しています。

関数内の name にその文字列が入り、あいさつの文章に利用されます。

同じ関数でも、渡す名前を変更すれば、異なる結果を表示できます。

greeting("佐藤")greeting("鈴木")

実行結果:

こんにちは、佐藤さん
こんにちは、鈴木さん

このように、引数を使用すれば、関数の処理を毎回書き直す必要がなくなります。

仮引数と実引数の違い

引数について学ぶと、「仮引数」と「実引数」という言葉も登場します。

def greeting(name):    print("こんにちは、" + name + "さん")greeting("山田")
仮引数name関数の定義で受け取る変数
実引数"山田"関数を呼び出すときに渡す値

最初は、関数を作るときに書くのが仮引数、関数を呼び出すときに渡すのが実引数、と覚えておきましょう。

3. 複数の引数を使う方法

引数は1つだけでなく、複数指定することもできます。

例えば、2つの数字を掛け算する関数は、次のように書けます。

def multiply(a, b):    print(a * b)multiply(5, 3)

実行結果:

15

ここでは、5が a に、3が b に渡されています。

複数の引数を使用する場合は、カンマで区切ります。基本的には、関数を定義したときの順番に値が渡されます。

4. 戻り値とは?returnの使い方

戻り値とは、関数の処理結果を呼び出した場所へ返す値のことです。

Pythonでは return を使用して戻り値を返します。

def multiply(a, b):    return a * bresult = multiply(5, 3)print(result)

実行結果:

15

ここでの重要な部分は、次のコードです。

return a * b

関数内で計算した結果を、関数を呼び出した側に返しています。

その結果が result という変数に保存されます。

戻り値を使用すると、関数から受け取った結果を別の計算や条件分岐などに利用できます。

戻り値を別の計算に利用する

例えば、関数の戻り値を2倍してみましょう。

def multiply(a, b):    return a * bresult = multiply(5, 3)answer = result * 2print(answer)

実行結果:

30

関数から返された15を、さらに2倍しています。

このように、戻り値は画面に表示するだけでなく、別の処理にも利用できることが特徴です。

5. printとreturnの違い

初心者が混乱しやすいのが、print() と return の違いです。

どちらも関数の中で使えますが、役割が異なります。

項目print()return
主な役割画面に値を表示する関数から値を返す
結果の再利用表示するだけではできない変数に代入して利用できる
関数の終了終了しない実行された時点で終了する

例えば、次の2つの関数を比べてみましょう。

def add_print(a, b):    print(a + b)def add_return(a, b):    return a + b

add_print() は計算結果を表示しますが、その計算結果を戻り値として返していません。一方、add_return() は結果を返すため、その値を使って別の計算ができます。

なお、Pythonでは return を省略した関数も、実際には None という値を返します。

6. returnを使うと関数の処理が終了する

return には、値を返すだけでなく、その時点で関数の処理を終了する働きもあります。

例えば、点数によって合格か不合格かを判定する関数を考えます。

def check_score(score):    if score >= 60:        return "合格"    return "不合格"print(check_score(85))

実行結果:

合格

85点は60点以上なので、最初の return "合格" が実行されます。その時点で関数が終了するため、次の return "不合格" は実行されません。

このような書き方は、実際のプログラムでもよく使われます。

7. 引数には初期値を設定できる

Pythonでは、引数にあらかじめ初期値を設定することもできます。これをデフォルト引数といいます。

def greeting(name="ゲスト"):    print("こんにちは、" + name + "さん")greeting()greeting("山田")

実行結果:

こんにちは、ゲストさん
こんにちは、山田さん

引数を省略した場合は、初期値である「ゲスト」が使用されます。引数を指定した場合は、その値が優先されます。

例えば、Webサイトでログインしていないユーザーを「ゲスト」と表示するなど、初期値を用意したい場面で役立ちます。

8. リストを引数として渡す

前回学習したリストも、関数に渡すことができます。

例えば、テストの点数をまとめたリストから、合計点と平均点を求める関数を作ってみましょう。

def calculate_average(scores):    total = 0    for score in scores:        total += score    return total / len(scores)scores = [70, 80, 90]average = calculate_average(scores)print(average)

実行結果:

80.0

ここでは、これまで学習した変数、繰り返し処理、リスト、関数、引数、戻り値のすべてを使っています。

なお、空のリストを渡すと0で割るエラーになるため、実際のプログラムではデータが存在するかどうかも確認する必要があります。

9. 複数の戻り値を返す方法

Pythonでは、関数から複数の値を返すこともできます。

例えば、2つの数字を受け取り、合計と差を求めてみましょう。

def calculate(a, b):    total = a + b    difference = a - b    return total, differenceresult1, result2 = calculate(10, 5)print(result1)print(result2)

実行結果:

15
5

return total, difference は、2つの値をタプルとしてまとめて返しています。

このように、1つの関数から複数の計算結果を受け取ることも可能です。

10. 引数と戻り値でよくある間違い

プログラミング初心者が注意したい間違いを3つ紹介します。

引数の数が合っていない

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

このプログラムでは、2つ必要な引数を1つしか渡していないため、エラーになります。

returnとprintを混同している

def add(a, b):    print(a + b)result = add(10, 20)print(result)

実行結果:

30
None

30は関数内の print() によって表示された値です。関数は戻り値を明示していないため、result には None が入ります。

計算結果を受け取りたい場合には return を使用しましょう。

returnの後に処理を書いている

def test():    return 10    print("こんにちは")

この場合、return の後にある print() は実行されません。

11. 練習問題で理解を深めよう

ここまで学習した内容を使って、3つの問題に挑戦してみましょう。

問題1:2つの数字の合計

2つの数字を引数として受け取り、合計を戻り値として返す関数 add() を作ってください。解答を表示する

問題2:偶数か奇数かを判定

整数を引数として受け取り、偶数なら「偶数」、奇数なら「奇数」を返す関数を作ってください。解答を表示する

問題3:リストの最大値

数字のリストを引数として受け取り、最大値を返す関数を作ってください。解答を表示する

12. まとめ

引数と戻り値は、関数を使いこなすための基本的な仕組みです。

  • 引数: 関数に渡すデータ
  • 戻り値: 関数が処理した結果として返す値
  • return: 値を返し、関数の処理を終了する
  • print(): 値を画面に表示する

関数を「入力 → 処理 → 出力」という流れで考えると、引数と戻り値の違いを理解しやすくなります。

まずは2つの数字の合計を求める関数など、簡単なプログラムから実際に書いてみましょう。