【Python】レッスン3-2:関数の戻り値とデフォルト引数を理解しよう

一つ前のLessonでは関数の基本について学習しました。
今回は関数の戻り値とデフォルト引数について見ていきます。
Lesson1:基礎文法編
Lesson2:制御構造編
Lesson3:関数とスコープ編
・Lesson3-1:関数の基本を理解しよう
・Lesson3-2:関数の戻り値とデフォルト引数を理解しよう ◁今回はココ
・Lesson3-3:スコープの概念を理解しよう
・Lesson3-4:高階関数を理解しよう
・Lesson3-5:無名関数を理解しよう
・練習問題3-1:丁半賭博ゲームを作ろう
・練習問題3-2:石取りゲームを作ろう
Lesson4:データ構造編
Lesson5:オブジェクト指向編
次のステップ:Python基礎習得者にお勧めの道5選(実務or副業)
戻り値とデフォルト引数とは?|関数の動きを思い通りに
関数の 戻り値 は「関数が最終的に返す結果」、デフォルト引数 は「引数を省略したときに使われる既定値」です。
どちらも関数の“入り口と出口”を設計する要素で、コードの挙動をわかりやすくし、同じ関数をさまざまな場面で再利用しやすくしてくれます。
この知識を身につけると、処理結果を値として受け取り後続の計算に活用したり、必要なときだけ引数を上書きして柔軟に振る舞いを変えたりできるようになります。
本文では、基本構文からよくあるパターン、つまずきやすいポイントまで丁寧に解説します。
サンプルを動かしながら、戻り値とデフォルト引数を使った“扱いやすい関数設計”を一緒に身につけていきましょう。
戻り値(返り値)とは?|returnで値を返す基本
関数はただ実行して処理を行うだけでなく、計算結果などのデータを関数の外に戻すことができます。
この戻すデータを「戻り値」もしくは「返り値」と言い、そのデータを他の計算や処理に利用できるようになります。
Pythonでは return
キーワードを使って関数から値を返します。1つの値を返すのが一般的ですが、複数の値を返すことも可能です。
次の例では2つの数値を足し合わせ、その結果を戻り値として返す関数を定義しています。
def add_numbers(a, b): # 関数add_numbersの定義 return a + b # 計算結果を戻り値として返す # 関数を呼び出し、戻り値を変数resultに代入して表示 result = add_numbers(3, 5) # 関数add_numbersを、2つの引数を渡して呼出し、その戻り値を変数resultに代入 print(f"合計は {result} です。")
このコードでは関数 add_numbers
が2つの引数 a
と b
を受け取り、その合計を計算して戻り値として返しています。
呼び出し元の result
変数にその結果が格納され、print
関数を使って結果が表示されます。
デフォルト引数とは?|省略時に使われる既定値と使い方
「デフォルト引数」とは関数を定義する際にあらかじめ「引数のデフォルト値」を設定しておく機能です。
デフォルト引数が設定されている場合、その引数を省略して関数を呼び出すことができます。
下記のコードではデフォルト引数を使った関数を定義しています。
デフォルト引数は関数を定義する際に引数に「=
」を使って値の設定がされ、呼び出し時にその引数が指定されなかった場合に使用されます。
この関数は名前とメッセージを受け取って挨拶を表示しますが、メッセージが指定されなかった場合は「こんにちは」が使われます。
def greet(name, message="こんにちは"): # 仮引数massageにデフォルト引数「こんにちは」を指定 print(f"{message}、{name}さん!") # デフォルトのメッセージを使って関数を呼び出し greet("太郎") # 仮引数messageに渡す実引数がないため、デフォルト引数が使用される # 出力は「こんにちは、太郎さん!」となる # メッセージを指定して関数を呼び出し greet("花子", "おはよう") # 2つの仮引数に実引数を渡して実行 # 出力は「おはよう、花子さん!」となる
このコードでは、最初の呼び出しでは greet("太郎")
のように名前だけを指定していますので、デフォルトのメッセージ「こんにちは」が使用され、「こんにちは、太郎さん!」と表示されます。
二つ目の呼び出しでは、名前とメッセージの両方が指定されていますので、「おはよう、花子さん!」と表示されます。
まとめ|returnと既定値で柔軟に動く関数へ
ここまでで、戻り値=関数が最終的に返す結果、デフォルト引数=引数を省略したときに使われる既定値という意味と、return
で値を返す基本的な書き方を確認しました。
この学習により、入力(引数)と出力(戻り値)を意識した関数設計ができ、同じ関数を再利用しやすく、読みやすく保てるようになります。
日常の小さな処理でも、戻り値で結果を返し、必要に応じて既定値を用意するだけで、扱いやすい関数に近づきます。
まずは、示した例を少しずつ自分の用途に置き換えて手を動かすことから続けてみてください。
できることが一つずつ増え、コードが思い通りに動く感覚が積み上がっていきます。
- サイト改善アンケート|ご意見をお聞かせください(1分で終わります)
-
本サイトでは、みなさまの学習をよりサポートできるサービスを目指しております。
そのため、みなさまの「プログラミングを学習する理由」などをアンケート形式でお伺いしています。1分だけ、ご協力いただけますと幸いです。
【Python】サイト改善アンケート
練習問題:戻り値とデフォルト引数を使ってみよう
この記事で学習した「戻り値とデフォルト引数」を復習する練習問題に挑戦しましょう。
問題|合計金額を計算しよう
商品価格と数量を入力し、合計金額を計算するプログラムを作成します。
数量の未入力時の扱いを通じて、戻り値とデフォルト引数の基本を確認しましょう。
以下の要件に従ってコードを完成させてください。
- 関数
calculate_total(price, quantity=1)
を定義し、price * quantity
を戻り値として返すこと。 - ユーザーから価格(整数)と数量の入力を受け取ること。
- 数量の入力は前後の空白を除去して判定し、未入力(空文字)ならデフォルト値 1 を用いること。
- 計算した合計金額を表示すること。
ただし、以下のような実行結果となるコードを書くこと。
商品の価格を入力してください(円): 500 商品の数量を入力してください(省略すると1になります): 3 合計金額は 1500 円です。 商品の価格を入力してください(円): 500 商品の数量を入力してください(省略すると1になります): 合計金額は 500 円です。
ヒント|難しいと感じる人だけ見よう
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
- ヒント1【コードの構成を見る】
-
正解のコードは上から順に以下のような構成となっています。
1:合計金額を計算して値として返す関数を、数量の既定値つきで定義するパート
・関数名は指定されたものを使う。
・引数は2つ用意し、数量側に既定値を設定する。
・関数の中では価格と数量を掛け算し、その結果を戻り値として返す。
・計算結果の表示はこのパートでは行わず、返すだけにする。2:ユーザー入力を受け取り、数量未入力なら既定値で計算するメイン処理
・価格は整数として読み取る。
・数量は文字として読み取り、前後の空白を取り除いてから空かどうかを判定する。
・未入力なら数量を指定せずに関数を呼び出し、入力があれば数量を数値にして関数に渡す。
・計算結果は表示せず、次のパートで使えるように変数に入れておく。3:計算済みの合計金額を文章に差し込んで画面に表示するパート
・画面に出力するための関数を使う。
・合計金額が入っている変数を、文章の中に差し込む(書式付き文字列を活用)。
- ヒント2【穴埋め問題にする】
-
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
# 合計金額を計算する関数 '''(穴埋め)関数calculate_total を定義する(quantity にデフォルト値 1 を設定)''' # 合計金額を計算して戻り値として返す '''(穴埋め)''' price * quantity # メイン部分 price = int(input("商品の価格を入力してください(円): ")) quantity_input = input("商品の数量を入力してください(省略すると1になります): ").strip() '''(穴埋め)未入力なら数量を省略して関数を呼び、入力があれば数量を int に変換して明示的に渡す''' # 結果を表示 print(f"合計金額は {total} 円です。")
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
解答例|合計金額計算プログラム
例えば以下のようなプログラムが考えられます。
- 正解コード
-
# 合計金額を計算する関数 def calculate_total(price, quantity=1): # 合計金額を計算して戻り値として返す return price * quantity # メイン部分 price = int(input("商品の価格を入力してください(円): ")) quantity_input = input("商品の数量を入力してください(省略すると1になります): ").strip() if quantity_input == "": total = calculate_total(price) else: quantity = int(quantity_input) total = calculate_total(price, quantity) # 結果を表示 print(f"合計金額は {total} 円です。")
解答例の解説|合計金額計算プログラムの考え方
解答例の詳細解説は以下の通りです。
- 詳細解説
-
合計金額を計算して値として返す関数
# 合計金額を計算する関数 def calculate_total(price, quantity=1): # 合計金額を計算して戻り値として返す return price * quantity
ここでは、商品価格と数量を受け取り、その掛け算の結果を関数の外へ返す仕組みを作っています。
数量は入力されない可能性があるため、あらかじめ「1」を既定値として用意しておくことで、呼び出し側が数量を省略しても正しく計算できます。
処理結果は画面に出力するのではなく、戻り値として返すので、呼び出した場所で自由に使い回せるのがポイントです。メイン処理
# メイン部分 price = int(input("商品の価格を入力してください(円): ")) quantity_input = input("商品の数量を入力してください(省略すると1になります): ").strip() if quantity_input == "": total = calculate_total(price) else: quantity = int(quantity_input) total = calculate_total(price, quantity)
このパートでは、まず価格を数値として受け取り、つづいて数量を文字として受け取ります。
数量は前後の空白を取り除いてから、何も入力されていないかを確認します。
未入力なら数量は既定の「1」を使って合計を計算し、入力がある場合は数量を数値に変換してから合計を計算します。
ここで計算した結果は、あとで表示するために変数に保存しておきます。結果を表示
# 結果を表示 print(f"合計金額は {total} 円です。")
前の処理で用意しておいた合計金額を、ユーザーにわかりやすい文章として表示します。
数値そのものを見せるだけでなく、「合計金額」や「円」といった言葉を組み合わせることで、結果の意味がひと目で伝わります。
書式付きの文字列を使えば、数値を文字として扱う変換を意識せず、自然なメッセージに仕上げられます。
このパートは表示だけを担当し、入力や計算は行いません。
関数の戻り値とデフォルト引数の疑問解消|FAQと用語のまとめ
初心者がつまずきやすいポイントをFAQとしてまとめ、またよく使う専門用語をわかりやすく整理しました。
理解を深めたいときや、ふと疑問に感じたときに役立ててください。
FAQ|関数の戻り値とデフォルト引数に関するよくある質問
- Q1. 戻り値を使うべきタイミングはいつですか?
-
関数の処理結果を関数の外で利用したいときに戻り値が必要です。関数が何かしらの“結果”を返す目的で設計されている場合に使われます。
- Q2. デフォルト引数を使うとどんな利点がありますか?
-
デフォルト引数を設定することで、関数呼び出し時にすべての引数を渡す必要がなくなり、可読性と柔軟性の高いコードが実現できます。
- Q3. デフォルト引数を使うときに気をつけるべき点は?
-
リストや辞書などのミュータブルなオブジェクトをデフォルト値にすると、意図しない動作が起こる可能性があるため、
None
などで初期化する方法が推奨されます。
Python用語集|関数の戻り値とデフォルト引数に関する用語一覧
今回の記事で出てきた用語・関数などを一覧で紹介します。
このサイトに出てくる 全てのPython用語をまとめた用語集 も活用してください。