引数と戻り値の違いは?関数での使い方も!(メソッド:プログラミング:入力と出力:Java:Python:C言語など)
プログラミングを学ぶ上で、「引数」と「戻り値」という言葉は非常に頻繁に登場します。
しかし、この2つの概念の違いをしっかりと理解できているか、いざ聞かれると戸惑う方も多いのではないでしょうか。
引数は「関数への入力」、戻り値は「関数からの出力」という関係になっており、これを正確に把握することで関数やメソッドの設計力が大きく向上します。
本記事では、引数と戻り値の違いをわかりやすく解説し、Java・Python・C言語などの具体的なコード例を交えながら使い方まで丁寧にご紹介していきます。
引数と戻り値の違いは「入力」と「出力」の関係
それではまず、引数と戻り値の本質的な違いについて解説していきます。
ひと言で表すなら、引数は「関数に渡すデータ(入力)」、戻り値は「関数が返すデータ(出力)」です。
関数やメソッドとは、ある処理をひとまとめにしたブロックのようなものです。
その処理を実行するときに「材料」として渡すのが引数であり、処理が終わった後に「結果」として受け取るのが戻り値という位置づけになります。
引数(ひきすう)=関数への「入力」として渡す値
戻り値(もどりち)=関数が処理を終えた後に「出力」として返す値
たとえば料理に例えると、引数は「食材」、戻り値は「完成した料理」のようなイメージです。
食材を渡すことで料理(処理)が行われ、完成品が手元に戻ってくる、という流れは関数の動きにとてもよく似ているでしょう。
この「入力と出力」という概念はプログラミング全般における基礎中の基礎であり、どの言語を学ぶ場合でも必ず理解しておきたいポイントです。
引数とは何か
引数とは、関数やメソッドを呼び出す際に「外部から渡す値」のことを指します。
関数の定義側では「仮引数(パラメータ)」と呼ばれ、呼び出し側で実際に渡す値は「実引数(アーギュメント)」と呼ばれることもあります。
引数を使うことで、同じ関数でも異なるデータに対して柔軟に処理を適用できるようになります。
たとえば「2つの数を足す関数」があれば、どんな数の組み合わせでも引数として渡すだけで計算できるわけです。
戻り値とは何か
戻り値とは、関数が処理を終えた後に「呼び出し元へ返す値」のことです。
戻り値があることで、関数の処理結果を別の変数に格納したり、さらに別の関数に渡したりといった柔軟な活用が可能になります。
戻り値が存在しない関数は「void型(C言語・Java)」や「None(Python)」として定義されることが一般的です。
すべての関数が戻り値を持つわけではない点も、しっかり覚えておきましょう。
引数・戻り値の違いを表で整理
引数と戻り値の主な違いを以下の表にまとめました。
| 項目 | 引数 | 戻り値 |
|---|---|---|
| 役割 | 関数への入力 | 関数からの出力 |
| タイミング | 関数を呼び出す時 | 関数の処理が終わった後 |
| 省略できるか | 関数によっては省略可 | void/Noneで省略可 |
| 複数指定 | 複数の引数を渡せる | 基本は1つ(言語により異なる) |
| 関連キーワード | パラメータ、実引数、仮引数 | return文、返り値 |
こうして比較すると、引数と戻り値はそれぞれ「関数の前」と「関数の後」に関わるものだということがより明確になるでしょう。
Java・Python・C言語での引数と戻り値の使い方
続いては、実際の言語での引数と戻り値の使い方を確認していきます。
代表的なプログラミング言語であるJava・Python・C言語を取り上げながら、それぞれの書き方の特徴を見ていきましょう。
Pythonでの使い方
Pythonでは、「def」キーワードで関数を定義し、「return」文で戻り値を返すシンプルな構文が特徴です。
def add(a, b):
result = a + b
return result
answer = add(3, 5)
print(answer) # 出力: 8
上記の例では、「a」と「b」が引数、「result(値8)」が戻り値にあたります。
Pythonはデータ型の宣言が不要なため、引数や戻り値の型を明示しなくてもそのまま動作します。
また、Pythonでは「デフォルト引数」や「キーワード引数」という便利な機能もあり、引数の扱いが非常に柔軟です。
Javaでの使い方
Javaでは、メソッドの定義時に引数の型と戻り値の型を明示する必要があります。
public int add(int a, int b) {
int result = a + b;
return result;
}
int answer = add(3, 5);
System.out.println(answer); // 出力: 8
「int a, int b」が引数であり、「return result」によって戻り値を返しています。
Javaは静的型付け言語のため、引数・戻り値ともに必ず型を指定することが求められます。
戻り値が不要な場合は、戻り値の型を「void」として宣言することになるでしょう。
C言語での使い方
C言語でも、Javaと同様に引数・戻り値の型を明示する必要があります。
int add(int a, int b) {
int result = a + b;
return result;
}
int main() {
int answer = add(3, 5);
printf(“%d\n”, answer); // 出力: 8
return 0;
}
C言語はプログラミングの原点ともいえる言語のため、引数と戻り値の基本的な仕組みを理解するにはC言語の学習が非常に有効です。
戻り値なしの関数は「void」型で宣言し、return文を省略するか「return;」のみで終わらせます。
関数とメソッドにおける引数・戻り値の応用
続いては、引数と戻り値のより実践的な応用パターンを確認していきます。
基本を押さえた後は、複数の引数を使うケースや戻り値を応用した処理など、実務でも役立つ知識を見ていきましょう。
複数の引数を持つ関数
関数には複数の引数を渡すことができます。
たとえば、名前と年齢を受け取って自己紹介文を返す関数を考えてみましょう。
def introduce(name, age):
return f”私の名前は{name}で、{age}歳です。”
message = introduce(“田中”, 25)
print(message) # 出力: 私の名前は田中で、25歳です。
このように複数の引数を渡すことで、より汎用性の高い関数を設計できます。
引数の順番を間違えると意図しない結果になるため、呼び出し時の順序には注意が必要です。
戻り値を使った連鎖処理
戻り値の強みは、その結果をそのまま別の処理に渡せる点にあります。
たとえば、計算結果をさらに別の関数に渡すような「連鎖処理」が実現できます。
def double(n):
return n * 2
def add_ten(n):
return n + 10
result = add_ten(double(5))
print(result) # 出力: 20
「double(5)」の戻り値10が、そのまま「add_ten」の引数として渡されるイメージです。
戻り値を活用した連鎖処理は、コードをシンプルかつ読みやすく保つために非常に有効な手法といえるでしょう。
引数なし・戻り値なしの関数
すべての関数が引数や戻り値を持つわけではありません。
引数も戻り値も持たない関数は、主に「特定の処理を実行するだけ」の用途で使われます。
def say_hello():
print(“こんにちは!”)
say_hello() # 出力: こんにちは!
この場合、関数は呼び出されるだけで外部からのデータ入力も結果の返却もありません。
ログの出力や画面表示など、副作用を目的とした処理では引数・戻り値を持たない関数が活躍します。
引数と戻り値に関するよくある疑問と注意点
続いては、引数と戻り値に関してよく寄せられる疑問や、実務で注意すべきポイントを確認していきます。
初学者がつまずきやすい部分を中心にまとめましたので、ぜひ参考にしてみてください。
引数と戻り値のデータ型はそろえる必要があるか
これはプログラミング言語によって異なります。
PythonやJavaScriptのような動的型付け言語では、型を意識せずに引数や戻り値を扱えます。
一方でJavaやC言語などの静的型付け言語では、引数と戻り値のデータ型を厳密に宣言する必要があります。
型の不一致はコンパイルエラーや実行時エラーの原因になるため、特に静的型付け言語を学ぶ際は慎重に確認することが重要です。
戻り値が複数ある場合はどうするか
基本的に関数が返せる値は1つですが、言語によって複数の値を返す方法が提供されています。
Pythonではタプルを使って複数の値を同時に返すことができます。
def min_max(numbers):
return min(numbers), max(numbers)
low, high = min_max([3, 1, 4, 1, 5, 9])
print(low, high) # 出力: 1 9
Javaでは配列やオブジェクトを戻り値として返すことで、複数のデータをまとめて返すことが可能です。
C言語では構造体やポインタを活用するのが一般的な手法になるでしょう。
参照渡しと値渡しの違い
引数の渡し方には「値渡し(コピー渡し)」と「参照渡し」の2種類があります。
値渡しでは関数内でのデータ変更が呼び出し元に影響しませんが、参照渡しでは関数内での変更が呼び出し元のデータにも反映されます。
| 渡し方 | 説明 | 主な言語 |
|---|---|---|
| 値渡し | 引数のコピーを渡す。元データに影響なし | C言語(基本)、Java(プリミティブ型) |
| 参照渡し | データの参照(アドレス)を渡す。元データが変わる可能性あり | C言語(ポインタ)、Java(オブジェクト型)、Python(ミュータブル型) |
この違いを理解していないと、意図せずデータが書き換えられてしまうバグの原因になることがあります。
特にオブジェクトや配列を引数として渡す際は、値渡しか参照渡しかを意識することが大切です。
まとめ
本記事では、引数と戻り値の違いを「入力と出力」という視点から解説し、Java・Python・C言語での具体的な使い方も紹介しました。
引数は関数への「入力」、戻り値は関数からの「出力」という基本をしっかりと押さえることが、プログラミング学習の土台となります。
言語によって構文は異なるものの、引数と戻り値という概念自体はどのプログラミング言語にも共通しています。
関数やメソッドを正しく設計・活用するためにも、引数と戻り値の理解は欠かせないでしょう。
引数=関数への入力(渡す値)
戻り値=関数からの出力(返ってくる値)
この2つをしっかり区別し、各言語の構文と合わせて習得することがプログラミング上達への近道です。
今回紹介したPython・Java・C言語の例を参考にしながら、ぜひ実際にコードを書いて試してみてください。
手を動かすことで、引数と戻り値の感覚がより自然と身についていくはずです。