Pythonの関数を実行するときに必要な引数についての解説です。呼び出し方によって位置引数とキーワード引数に分けられます。今回はそれらの違いを見ていきましょう。
もし関数や引数の基本について知りたいという方は以下の記事をご覧ください。
Pythonで関数の定義を行うと気に欠かせないのが引数です。単に関数の入力値と言ってもデフォルト値を持つものや持たないもの、そもそも引数がない関数などもあります。 今回はこう言った引数の基本的な内容を解説していきます。もし、「そもそ[…]
プログラミングの勉強での山場の一つであるPythonの関数の解説をしていきます。引数・戻り値の解説から組み込み関数一覧まで紹介しています。 関数とは? 関数とは入力値を処理してある値を出力する装置のことを言います。ブラックボッ[…]
位置とキーワードの違い
- これらの違いは関数を実行するときの引数の渡し方による
- 位置引数は引数の値だけを書く
- キーワード引数は「kwarg=value」で書く
以下の関数をを様々な呼び出し方で実行してみましょう。
1 2 |
def menu(food, drink, when='朝'): print(food, drink, 'を', when, 'に食べた') |
ここで定義されている関数の引数を覚えておきましょう。「food, drink, when=’朝’」の順番に並んでいて、「when」だけデフォルト値が設定されています。
位置引数とは
順番で値が決まる引数を位置引数と言います。以下のような順番で渡すと正しく実行できます。デフォルト値が設定されている引数は省略することができます。
1 2 3 4 5 6 7 8 9 10 11 12 |
#デフォルト値を省略 menu('パン', 'コーヒー') #出力結果 パン コーヒー を 朝 に食べた #デフォルト値を上書き menu('パン', 'コーヒー', '夜') #出力結果 パン コーヒー を 夜 に食べた |
それぞれ、定義された引数の順番に値が決まっていることが分かります。この順番を無視すると正しく実行されなかったり、エラーが出たります。
1 2 3 4 5 6 7 8 9 10 |
menu('パン', '夜') #出力結果 パン 夜 を 朝 に食べた menu('パン') #出力結果 TypeError: menu() missing 1 required positional argument: 'drink' |
デフォルト値が設定されていない引数の値は必ず入力しなけばなりません。順番を間違ると一つ目のように変な出力になります。また、引数の数が足りない場合はエラーが出てしまいます。
キーワード引数とは
キーワード引数とは「kwarg=value」の形で与えられる引数のことです。イコールを使って書くことで引数の位置に縛られずに自由に書くことができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
menu(food='パン', drink='コーヒー') #出力結果 パン コーヒー を 朝 に食べた menu(drink='コーヒー', food='パン') #出力結果 パン コーヒー を 朝 に食べた menu(food='パン', drink='コーヒー', when='夜') #出力結果 パン コーヒー を 夜 に食べた |
どの引数にどんな値を代入するのかを書く方法です。1つ目と2つ目を見ても分かるように引数の順番に関係なく正しく実行されています。また、3つ目のようにデフォルト値を上書きするときも同様に書くとできます。
以下は間違いの例です。
1 2 3 4 5 6 7 8 9 |
menu('コーヒー', food='パン') #出力結果 TypeError: menu() got multiple values for argument 'food' menu(food='パン', 'コーヒー') #出力結果 positional argument follows keyword argument |
1行目の引数は両方とも「food」の値を書いていることになります。「コーヒー」が位置引数で「food」に渡されて、そのあとのキーワード引数も「food」に渡されているのでエラーとなります。
次の例でのエラーは「位置引数→キーワード引数の順番で書いてください」という文が表示されます。この書き方は守りましょう。
まとめ
- 違いは関数を実行するときの引数の渡し方による
- 位置引数は引数の値だけを書く
- キーワード引数は「kwarg=value」で書く
- 位置引数→キーワード引数の順番で書く
プログラミング言語のなかでも人気の高いPythonを学習する教材を紹介します。 最近ではプログラミングスククールがたくさんあるので迷うと思います。 ですが、まずは無料教材から始めてみましょう。苦労した分だけ力がつきます。 […]