Pythonで関数やメソッドを呼び出すとき、(カッコ)の中に「引数」を指定することがありますね。
この引数の指定方法には、いくつか種類があり、使い分けることで分かりやすく効率的なプログラミングが可能です。
この記事では、位置引数とキーワード引数の違いを解説し、それぞれの使い方について説明します。
理解できる対象者・レベル
この記事では、以下の方を想定して解説しています。
- 基本的なPythonの関数の定義が分かる
- 定義された関数を実行(呼び出す)ことができる
位置引数とは
簡単に言いうと「値を渡す順番によるもの」を位置引数といいます。
関数の定義と実行(呼び出し)をしてみましょう。
def myname(name, age):
print('私の名前は' + name + 'です。' + age + '歳です。')
上記では、mynameという関数を定義し、引数はnameとageです。
そのnameとageをprint文の中で使っています。
この関数を呼び出すとき、例えば以下の様に関数を呼び出すと、
myname('papa', '100') # 関数に2つの値を渡している
実行結果は「私の名前はpapaです。100歳です。」となります。
関数に渡している値は、1番目がpapa、2番目が100なので、その「位置」によって関数に渡されます。
つまり、myname(name, age)はmyname(1番目,2番目)となるため、papaは1番目=nameに、100は2番目=ageに渡されています。
このとき、例えば以下の様に関数を呼び出すと、
myname('100', 'papa') # 1番目に100、2番目にpapa
実行結果は「私の名前は100です。papa歳です。」となります。
文章自体はおかしいですが、関数としては「1番目、2番目、、、」というように引数を受け取りますから、このようになるのですね。
キーワード引数とは
簡単に言うと、「引数に名前を付けて値を渡すもの」をキーワード引数といいます。
それでは、位置引数の問題を解消することができる「キーワード引数」についてみてみましょう。
関数の定義は先ほどと同じ例を使います。
def myname(name, age):
print('私の名前は' + name + 'です。' + age + '歳です。')
この関数を呼び出すとき、例えば以下の様に関数を呼び出すと、
myname(age='100', name='papa') # 引数に名前を付けて値を渡す
実行結果は「私の名前はpapaです。100歳です。」となります。
引数に名前をつけて、ageには100、nameにはpapaという値を入れ、関数を実行しています。
つまり、myname(name, age)のnameとageにはそれぞれpapaと100が入るため、位置(順番)は関係なく、適切なprint文が出力できています。
まとめ
いかがだったでしょうか。
Pythonにおける位置引数とキーワード引数について解説しました。
「なるほどなぁ」と思ったら理解できたということですね。
関連する記事として、キーワード引数を使った可変長の引数**kwargsについても解説しています。
宜しければぜひご覧ください。
記事に関する間違い、ご質問などがありましたら、コメントにてお知らせください。
Pythonについて詳しく知りたいという方は、こちらの書籍もおススメです。
それでは、ステキなPythonライフを!