Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】#Python Functions: Parameters, Arguments, Default Arguments, and Keyword Arguments

2026年11月03日に「Dev.to」が公開したITニュース「#Python Functions: Parameters, Arguments, Default Arguments, and Keyword Arguments」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Python関数はコードを再利用する塊。定義時の「パラメータ」と呼び出し時の「引数」の違いを学ぶ。引数には位置で渡すもの、デフォルト値を持つもの、名前で指定するものがある。`pass`は仮の定義に、`print`は表示に、`return`は値の返却に使う。

ITニュース解説

プログラミングにおいて「関数」は非常に重要な概念だ。関数とは、特定の処理をひとまとまりにした再利用可能なコードのブロックを指す。同じ処理を何度も書く手間を省き、コード全体を見やすく、管理しやすくするために利用する。

Pythonで関数を定義するには、「def」というキーワードを使う。例えば、画面に「Hello World」と表示するだけの関数「greet」を定義する場合、「def greet():」と書き、その下に実行したい処理(「print("Hello World")」)をインデントして記述する。この定義だけでは関数は実行されない。実際に処理を実行するには、定義した関数の名前と丸括弧を使って「greet()」のように呼び出す必要がある。関数が呼び出されると、その関数内に書かれた処理が上から順に実行されるのだ。

関数を学ぶ上で、しばしば混同されがちなのが「パラメーター」と「引数」の違いである。この二つは密接に関連しているが、役割が異なる。パラメーターは、関数を定義する際に、丸括弧の中に書かれる変数だ。これは、関数が外部からどのようなデータを受け取るかを示す「入れ物」あるいは「受け皿」の役割を果たす。例えば、「def greet(name):」という関数定義では、「name」がパラメーターである。一方、引数は、関数を呼び出す際に、丸括弧の中に実際に渡される「値」のことだ。この値が、関数定義時のパラメーターに割り当てられる。先の例で「greet("Sam")」と関数を呼び出す場合、「"Sam"」が引数となる。この引数「"Sam"」が、関数「greet」のパラメーター「name」に渡され、関数内で利用されるという仕組みだ。結果として「Hello Sam」と表示される。つまり、パラメーターは関数の「設計図」に書かれた変数の名前であり、引数はその設計図に沿って関数を実行する際に「実際に投入する具体的なデータ」であると言える。

引数を関数に渡す最も基本的な方法は「位置引数」だ。これは、関数を呼び出す際に渡す引数の順番が、関数定義時に指定されたパラメーターの順番と一致していなければならないというルールに基づいている。例えば、「def employee(name, department):」という関数がある場合、「employee("Sam", "IT")」と呼び出すと、最初の引数「"Sam"」が最初のパラメーター「name」に、二番目の引数「"IT"」が二番目のパラメーター「department」にそれぞれ割り当てられる。引数の位置がそのままパラメーターに紐づくため、「位置引数」と呼ばれる。この順番を間違えると、意図しないデータが渡されてしまうため注意が必要だ。

関数の中には、特定のパラメーターに「デフォルト値」を設定できるものもある。これを「デフォルト引数」と呼ぶ。デフォルト引数を持つパラメーターは、関数呼び出し時にその引数を省略しても、事前に設定されたデフォルト値が自動的に使われる。例えば、「def greet(name, message="Happy Birthday"):」という関数を定義した場合、パラメーター「message」には「"Happy Birthday"」というデフォルト値が設定されている。「greet("Sam")」と呼び出すと、引数「name」には「"Sam"」が渡され、引数「message」は省略されたためデフォルト値の「"Happy Birthday"」が使われる。結果は「Sam Happy Birthday」となる。もちろん、デフォルト値を上書きしたい場合は、「greet("Sam", "Many more happy returns of the day")」のように明示的に新しい値を渡すことも可能だ。この場合、指定された「"Many more happy returns of the day"」がデフォルト値に優先して使われる。デフォルト引数を使う場合、注意すべき点がある。必須のパラメーター(デフォルト値が設定されていないパラメーター)は、デフォルト引数を持つパラメーターよりも前に定義する必要がある。例えば、「def employee(name, salary, department="IT"):」は正しい定義だが、「def employee(name="Sam", salary, department="IT"):」のように、デフォルト引数を持つパラメーターの後に必須パラメーターを置くと、Pythonは構文エラーとして認識する。これは、Pythonが引数をどのパラメーターに割り当てるべきか判断できなくなるためだ。

もう一つの引数の渡し方が「キーワード引数」だ。これは、関数を呼び出す際に、パラメーターの名前を使って引数を渡す方法である。例えば、「def greet(name, message):」という関数に対して、「greet(name="Narmatha", message="Happy Birthday")」のように記述する。この方法の大きな利点は、引数の順序を自由に並べ替えられる点にある。位置引数では順序が厳密に決められていたが、キーワード引数では「greet(message="Happy Birthday", name="Narmatha")」のように順序を入れ替えても、Pythonはパラメーター名に基づいて正しく値を割り当ててくれる。なぜなら、Pythonはパラメーター名(キーワード)によってどの値がどのパラメーターに対応するかを識別するため、位置に依存しないのだ。結果として、出力されるメッセージの順序は、関数定義内の「print()」文でパラメーターが使われている順序によって決まる。この機能は、多くのパラメーターを持つ関数を呼び出す際に、どの引数が何に対応するのかが明確になり、可読性が向上するというメリットがある。

「pass」はPythonにおけるユニークなステートメントの一つだ。これは「何もしない」という動作をするプレースホルダー(仮の場所)として機能する。関数を定義する際に、まだ具体的な処理内容が決まっていない場合や、後で実装する予定がある場合に「pass」を使うと便利だ。「def greet(): pass」のように書くことで、Pythonは文法的に正しい関数定義として受け入れるため、エラーにならずにコードの骨格だけを先に作成できる。passステートメントは実行されても何も処理を行わないが、関数の実行自体を止めるわけではない。passの後に別の処理が書かれていれば、それは正常に実行される。

関数の振る舞いを理解する上で、「print()」と「return」の違いを把握することは非常に重要だ。「print()」は、その名の通り、指定された値を画面(標準出力)に表示するための関数だ。これ自体は、関数から何か値を取り出して利用するわけではない。単に「見せる」ための機能である。一方、「return」は、関数が処理を終えた後に、その結果として「値を呼び出し元に返す」ためのステートメントだ。関数が何かを計算したり、特定の処理を行い、その結果の値を別の場所で使いたい場合に「return」が用いられる。例えば、「def calculate_sum(): return 20 - 30」という関数では、計算結果の「-10」を呼び出し元に返す。「result = calculate_sum()」と記述すると、関数から返された「-10」が変数「result」に格納される。この「result」の値を画面に表示するには、改めて「print(result)」と書く必要がある。もし「print(result)」がなければ、値は変数に格納されるものの、画面には何も表示されない。つまり、「print()」は値を表示するだけだが、「return」は値を関数から外部に持ち出す役割を担う。この違いを理解することは、関数を使ったプログラムの設計において不可欠だ。

今日解説した内容は、Pythonで効率的かつ堅牢なプログラムを作成するために欠かせない関数の基本的な概念である。関数とは何か、その定義と呼び出し方、そしてパラメーターと引数の明確な違い、引数を渡す様々な方法(位置引数、デフォルト引数、キーワード引数)は、プログラムの柔軟性を高める上で非常に重要だ。また、一時的なコードの骨格を作るための「pass」ステートメントや、画面表示と値の返却という根本的に異なる役割を持つ「print()」と「return」の違いを理解することは、複雑なプログラムを作成する上で混乱を避けるために不可欠である。これらの概念をしっかりと習得することで、システムエンジニアを目指す上での強力な基盤を築くことができるだろう。引き続き、実践を通じて知識を深めていくことが大切だ。

関連コンテンツ

関連ITニュース