Pythonのreturn文の使い方!値を返す関数の書き方と注意点
生徒
「Pythonで関数から結果を取り出したいときって、どうすればいいんですか?」
先生
「そのときに使うのがreturn文です。関数の中で計算した結果などを外に返すときに使うんですよ。」
生徒
「なるほど!具体的にどうやって使えばいいのか、詳しく教えてください!」
先生
「もちろんです!Pythonのreturn文の使い方と注意点を一緒に学んでいきましょう。」
1. Pythonのreturn文とは?戻り値の役割をわかりやすく解説
Pythonのreturn(リターン)文とは、関数の中で処理した結果を、関数の外(呼び出し元)に「戻り値(返り値)」として渡すための命令です。プログラミング初心者の方には、「関数という工場に材料を渡し、加工された製品を受け取るための出口」とイメージすると分かりやすいでしょう。
例えば、自動販売機をイメージしてみてください。「お金を入れてボタンを押す(関数の呼び出し)」と、「飲み物が出てくる(returnによる戻り値)」という流れになります。もしreturnがなければ、自動販売機の中で飲み物は用意されたけれど、取り出し口には何も出てこない状態になってしまいます。
以下の簡単なプログラムで、returnがある場合の動きを見てみましょう。
def get_lucky_number():
number = 7
return number # ここで「7」という値を外に返している
# 関数を呼び出して、戻ってきた値を変数に保存する
my_fortune = get_lucky_number()
print("今日のラッキーナンバーは " + str(my_fortune) + " です!")
このコードでは、get_lucky_numberという関数の中で作られた「7」という数字を、returnを使って関数の外に放り出しています。その結果、外側にある変数my_fortuneでその値を受け取り、あとから自由に使うことができるのです。
関数はただ命令を実行するだけでなく、「計算結果や作成したデータを持ち帰って、次の処理に活かす」ためにreturnを使用します。この仕組みがあるおかげで、Pythonのプログラムを効率よく組み立てることが可能になります。
2. returnを使った関数の基本的な書き方
関数の中でreturnを書くだけで、値を返すことができます。以下の例では、2つの数を足して、その結果を返しています。
def add(a, b):
return a + b
result = add(3, 5)
print(result)
8
このように、add関数は計算結果(8)を返し、それをresult変数に受け取っています。
3. returnがない関数との違い
Pythonの関数では、returnがないと、戻り値はNone(ナン)になります。Noneは「なにもない」という意味の特別な値です。
def say_hello():
print("こんにちは")
result = say_hello()
print(result)
こんにちは
None
この例では、say_hello関数の中にreturnがないため、resultにはNoneが入ります。
4. returnで複数の値を返すこともできる
Pythonでは、returnで複数の値を同時に返すこともできます。その場合はタプル(カンマ区切りの値)として返されます。
def get_user():
name = "たろう"
age = 25
return name, age
user_name, user_age = get_user()
print(user_name)
print(user_age)
たろう
25
このように、1つのreturnで2つ以上のデータを一度に返すことができ、とても便利です。
5. returnの位置に注意しよう
return文が実行されると、そこで関数は終了します。returnのあとに書かれたコードは実行されません。
def test():
print("ここまで実行されます")
return
print("これは実行されません")
test()
ここまで実行されます
このように、return以降のコードは無視されるので、書く位置には注意しましょう。
6. returnを使うと関数が「部品」になる
returnを使って値を返すことで、関数は単なる処理ではなく、使いまわせる「部品」として活躍します。たとえば、「消費税を計算する関数」を作って、いろんな場面で再利用できます。
def calc_tax(price):
return price * 0.1
print("消費税:", calc_tax(1000))
print("消費税:", calc_tax(2500))
消費税: 100.0
消費税: 250.0
このように、関数とreturnをうまく使うと、コードがスッキリ整理されて、間違いも少なくなります。
7. returnの使い方でよくある間違い
初心者がよくやってしまうのは、printとreturnの違いを混同することです。printは画面に表示するだけで、値を戻しません。逆にreturnは結果を戻しますが、表示はしません。
def wrong_function():
print("これは戻り値ではありません")
result = wrong_function()
print(result)
これは戻り値ではありません
None
このように、printで表示しただけでは、関数の結果としては何も返していません。計算結果などを使いたいときは、必ずreturnを使いましょう。
まとめ
ここまでPythonのreturn文について詳しく解説してきましたが、いかがでしたでしょうか。プログラミング初心者にとって、関数と戻り値(返り値)の関係を正しく理解することは、効率的で美しいコードを書くための第一歩となります。
return文の役割を再確認しよう
Pythonのreturn文には、大きく分けて2つの重要な役割があります。
- 呼び出し元に値を渡す: 関数内での処理結果(計算結果、加工した文字列、取得したデータなど)を関数の外へ持ち出し、別の変数に代入したり、別の計算に利用したりできるようにします。
- 関数の処理を終了させる:
returnが実行された時点で、その関数の処理は即座に打ち切られます。これにより、条件分岐(if文)と組み合わせて、特定の条件下で処理を途中で切り上げる「ガード句」のような使い方も可能になります。
実践的なサンプルプログラム:条件分岐とreturn
実際の開発現場では、returnは単に値を返すだけでなく、プログラムの挙動を制御するために頻繁に使われます。例えば、入力された値が正しいかどうかを判定し、不適切な場合にはすぐに処理を終了させる例を見てみましょう。
def check_inventory(stock_count):
if stock_count <= 0:
return "在庫がありません"
# 在庫がある場合のみ実行される処理
message = f"在庫は残り{stock_count}個です。購入可能です。"
return message
# ケース1:在庫がある場合
status1 = check_inventory(15)
print(status1)
# ケース2:在庫がない場合
status2 = check_inventory(0)
print(status2)
在庫は残り15個です。購入可能です。
在庫がありません
このプログラムでは、stock_countが0以下の場合、最初のif文の中でreturnが実行され、関数が終了します。そのため、その下にあるメッセージ作成の処理は実行されません。このように、returnを使いこなすことで、複雑な条件分岐もスッキリと記述できるようになります。
リストや辞書を返す応用テクニック
returnで返せるのは数値や文字列だけではありません。リストや辞書、あるいは自作のクラスのインスタンスなど、Pythonのあらゆるオブジェクトを返すことができます。複数の情報をひとまとめにして返したい場合に非常に有効です。
def create_profile(name, hobby):
profile = {
"name": name,
"hobby": hobby,
"language": "Python"
}
return profile
user_data = create_profile("佐藤", "キャンプ")
print(user_data["name"])
print(user_data["language"])
佐藤
Python
このように辞書形式で値を返すと、呼び出し側で「どのデータが何を意味しているのか」が明確になり、大規模なプログラムでもメンテナンス性が向上します。
開発効率を上げるためのSEO視点のアドバイス
Pythonで「関数 戻り値 複数」や「Python 関数 終わり方」と検索する方は非常に多いです。プログラミングの学習において、returnをマスターすることは、単なる文法の習得以上の価値があります。それは「ロジックを部品化する思考」を養うことだからです。
コードを書く際は、常に「この関数は何を返すのが最適か?」を考える癖をつけましょう。戻り値が必要ない場合は無理に書く必要はありませんが、関数の結果を再利用したい場合は、printではなく必ずreturnを使うように徹底してください。
生徒
先生、ありがとうございました!returnを使うと、関数がただの「命令のまとまり」から、便利な「計算マシン」や「データ加工ツール」に進化する感じがして面白いですね。
先生
その通りです!素晴らしい気づきですね。関数を「ブラックボックス」として考えて、何かを入れたら(引数)、何かが返ってくる(戻り値)、という捉え方をすると、プログラム全体の設計がとても楽になりますよ。
生徒
さっきの複数の値を返す方法も驚きました。カンマで区切るだけでタプルとして返ってくるなんて、Pythonは本当に柔軟ですね。でも、returnを書いた後のコードが実行されないっていうのは、うっかりミスでやってしまいそうです。
先生
そうですね、それはよくある落とし穴です。特にデバッグ中にprintをreturnの後ろに入れてしまって、「あれ?ログが出ないぞ?」と悩む初心者は多いですよ。関数の出口はreturnだと、しっかり覚えておきましょう。
生徒
はい!あと、printとreturnの使い分けも整理できました。画面に見せたいだけのときはprint、その後の計算や処理で使い回したいときはreturnですね。これで自信を持って関数が書けそうです!
先生
完璧な理解です!その調子で、色々な「戻り値を持つ関数」を作って練習してみてください。次はリストの内包表記や、より高度な引数の受け渡しについても学んでいくと、さらにPythonが楽しくなりますよ。頑張りましょうね!