関数に情報を渡し、結果を受け取る方法をマスターしよう!
前回は関数の基本的な定義と呼び出し方を学びましたね。関数は特定の処理をひとまとめにする便利な機能ですが、その真価は「引数」と「戻り値」を使うことでさらに発揮されます。 💪
引数を使うと、関数に外部から情報を与えることができます。これにより、同じ処理でも異なるデータに対して関数を実行できるようになります。一方、戻り値を使うと、関数内での処理結果を関数の呼び出し元に返すことができます。
今回は、この「引数」と「戻り値」について詳しく見ていきましょう!
引数 (Arguments / Parameters) とは? 🤔
引数(ひきすう)とは、関数を呼び出す際に、関数に渡す値のことです。関数を定義する際には、受け取る値を「仮引数(parameter)」として指定し、関数を呼び出す際には、具体的な値を「実引数(argument)」として渡します。
簡単な例を見てみましょう。挨拶を表示する関数を考えます。
# 関数定義:name という仮引数を受け取る
def greet(name):
print(f"こんにちは、{name}さん!")
# 関数呼び出し: "山田" という実引数を渡す
greet("山田")
# 関数呼び出し: "鈴木" という実引数を渡す
greet("鈴木")
実行結果:
こんにちは、山田さん!
こんにちは、鈴木さん!
このように、引数 name
を使うことで、関数 `greet` は様々な名前に対して挨拶を表示できるようになりました。
引数の種類
Pythonの関数では、いくつかの種類の引数の渡し方があります。
1. 位置引数 (Positional Arguments)
最も基本的な引数の渡し方です。関数を呼び出す際に渡した引数が、関数定義の仮引数の順番通りに対応付けられます。
def introduce(name, age):
print(f"私の名前は{name}です。年齢は{age}歳です。")
# 1番目の引数 "佐藤" が name に、2番目の引数 25 が age に対応
introduce("佐藤", 25)
実行結果:
私の名前は佐藤です。年齢は25歳です。
注意点:引数の順番を間違えると、意図しない動作になる可能性があります。
戻り値 (Return Value) とは? 🎁
戻り値(もどりち)とは、関数が処理を実行した結果として、関数の呼び出し元に返す値のことです。関数内で `return` 文を使うことで、戻り値を指定します。
# 2つの数値を受け取り、その合計を返す関数
def add(a, b):
result = a + b
return result # 計算結果を戻り値として返す
# 関数を呼び出し、戻り値を変数 sum_result に代入
sum_result = add(5, 3)
print(f"5 + 3 の結果は {sum_result} です。")
# 戻り値は直接使うこともできる
print(f"10 + 7 の結果は {add(10, 7)} です。")
実行結果:
5 + 3 の結果は 8 です。
10 + 7 の結果は 17 です。
`return` 文が実行されると、その時点で関数の処理は終了し、指定された値が呼び出し元に返されます。
複数の値を返す
`return` 文でカンマ区切りで複数の値を指定すると、それらの値はタプルとしてまとめられて返されます。
# 2つの数値を受け取り、合計と差を返す関数
def calc_sum_diff(a, b):
sum_val = a + b
diff_val = a - b
return sum_val, diff_val # 合計と差をタプルとして返す
# 戻り値をタプルのまま受け取る
result_tuple = calc_sum_diff(10, 4)
print(f"計算結果 (タプル): {result_tuple}")
print(f"合計: {result_tuple[0]}")
print(f"差: {result_tuple[1]}")
# 戻り値を別々の変数にアンパックして受け取ることもできる
s, d = calc_sum_diff(10, 4)
print(f"合計: {s}")
print(f"差: {d}")
実行結果:
計算結果 (タプル): (14, 6)
合計: 14
差: 6
合計: 14
差: 6
戻り値がない場合 (None)
関数内で `return` 文が実行されない場合、または `return` の後に何も指定しない場合、関数は自動的に特別な値 `None` を返します。`None` は「何もない」ことを表す値です。
# 戻り値を指定しない関数
def simple_print(message):
print(message)
# return 文がない
result = simple_print("Hello!")
print(f"simple_print関数の戻り値: {result}")
print(f"戻り値の型: {type(result)}")
# return だけ書いた場合も同様
def return_none():
print("returnの後に値を指定しません")
return
result_none = return_none()
print(f"return_none関数の戻り値: {result_none}")
実行結果:
Hello!
simple_print関数の戻り値: None
戻り値の型: <class 'NoneType'>
returnの後に値を指定しません
return_none関数の戻り値: None
処理を実行するだけで、特に結果を返す必要がない関数では、このように戻り値が `None` になります。
まとめ 🥳
今回は、関数の「引数」と「戻り値」について学びました。
- 引数: 関数に情報を渡すための仕組み。位置引数、キーワード引数、デフォルト引数、可変長引数(
*args
,**kwargs
)などがある。 - 戻り値: 関数の処理結果を呼び出し元に返すための仕組み。
return
文で指定する。複数の値を返す場合はタプルになり、return
がない場合はNone
が返る。
引数と戻り値を使いこなすことで、関数はより柔軟で、再利用性の高いものになります。様々なデータを処理したり、計算結果を他の処理で活用したりできるようになります。
色々な種類の引数や戻り値のパターンを試して、関数の使い方に慣れていきましょう!🚀
コメント