初めてのPython実践試験学習 第22回「関数の引数:位置引数とキーワード引数とは」

こんにちは、吉政創成 菱沼です。

今回もPythonエンジニア育成推進協会のPython 3 エンジニア認定実践試験の主教材「Python実践レシピ/技術評論社」を使って学習中です。

前回は、コンテキストマネージャーの周辺と、with文について学びました。

今回からChapter3.3関数の引数に入ります。まずは位置引き数とキーワード引き数についてです。

関数の種類

関数を使用する際、関数にデータを受け渡すのに利用されるのが引数ですが、その引数にはいくつかの種類があるんだそうです。

  • 位置引数
  • キーワード引数
  • デフォルト値付き引数
  • 可変長位置引数
  • 可変長キーワード引数
  • キーワード専用引数
  • 位置専用引数

というわけで、今回は位置引数とキーワード引き数について学んでいきます。

なお、Pythonでは関数定義に使う引数を仮引数(parameter)とし、関数呼び出し時に渡す引数を実引数(argument)と呼ぶそうです。書籍もそれに合わせて記述されています。

位置引数とは

関数を呼び出したときに、設定された引数が先頭から順番に受け渡されるものが位置引数だそうです。

ここでサンプルコードを確認してみます。

—————————

P.52

—————————

このサンプルの関数には引数が3つ設定されており、print関数で引数を表示するという関数になっています。この関数を定義された時点での引数が仮引数(parameter)です。その後、sample_func関数を呼び出すということをしますが、この時に設定される引数が実引数(argument)です。

には実引数1(spam)、2(ham)、3(egg)と設定されていますので、その順番通りに仮引数に引き渡されます。

では、sample_func関数は3つの引数を持つことになっていますが、関数を呼び出す際に、勝手に引数を4つ以上にしたらどうなるのか…。こうなります。

—————————

P.52

—————————

実引数の数が多いわよ!と怒られています。

では逆に実引数が少なかったらどうなるか。

一人少ないわ!と怒られました。たしかにタラちゃんがいません。

つまり、位置引数の特徴は、

1.実引数は頭から順番に受け渡される

2.仮引数と実引数は同じ数にする

ということになります。

キーワード引数

では次にキーワード引数です。

こちらは関数を呼び出す際に、仮引数の名前を指定(キーワード)して実引数が受け渡されます。

では実際の動きを書籍のサンプルコードP.52、53で確認してみます。

—————————

キーワードで実引数を引き渡す場所を決めるので、位置引数とは異なって、順番は関係ありません。

では次に、存在しない仮引数を指定するとこちらはどうなるのか。

やっぱり怒られました。

ちなみに引数が少ないと…

param1に入れるための実引数がないと怒られます。

というわけで、キーワード引数の特徴は、

1.設定した仮引数の名前で実引数を受け渡す

2.仮引数と実引数は同じ数にする

ということになります。

練習と比較で…上が位置引数、下がキーワード引数を使っています。

順番が分かり切っているものなら位置引数で、名簿などの引数にしたいものが多い時や引数の意味を分かりやすくしておきたいときにはキーワード引数が便利だということですね。

位置引数とキーワード引数は混ぜて使えるのか。

位置引数から始め、途中からキーワード引数を利用するということは可能ですが、その逆(キーワード引数→位置引数)はできないそうです。確かに先にキーワード引数から始まった場合、位置引数はどこからスタートすべきか悩みのもとになりそうです。

では書籍のサンプルコード(P.53)を確認します。

こちらは位置引数→キーワード→キーワードなので問題なく表示されます。

では次はキーワード→位置引数→位置引数です。

位置引数がキーワードの後になっていると怒られています。

では最後に、位置引数ですでに入っている場所をキーワードで指定したらどうなるか。

すでに位置引数でparam1には値が入っていますので、param1=3は受け入れられませんと怒られています。

それではきりが良いので今回はこちらで終了です。

お付き合いいただきありがとうございました。

実践試験について知りたい方は以下をご覧ください。

●Python3エンジニア認定実践試験

更新情報

PAGE TOP