Pythonの関数で引数にパラメータオプション「*と/」を定義する方法

Pythonの関数を書くときに欠かせないのが引数です。それには位置引数とキーワード引数があります。詳しくは以下の記事で確認してください。

関連記事

Pythonの関数を実行するときに必要な引数についての解説です。呼び出し方によって位置引数とキーワード引数に分けられます。今回はそれらの違いを見ていきましょう。 もし関数や引数の基本について知りたいという方は以下の記事をご覧ください[…]

今回はそれらの引数を定義するときに使えるパラーメーターオプションのアスタリスクとバックスラッシュの使い方と意味を解説していきます。

注意:「*args」「**kwargs」の解説ではありません。これらの引数タプルや辞書の解説は下の記事をご覧ください。

関連記事

Pythonの関数で引数をタプルや辞書に格納するときに使う「*args」「**kwarga」について詳しく解説していきます。 可変長引数を理解すると、関数を実行する状況によって引数の長さが変わる場合に対応できるようになります。 […]

位置引数とキーワード引数

関数に引数を渡すときの違いによって位置とキーワードが区別されます。位置引数とキーワード引数の詳しい内容はコチラの記事をご覧ください。

  • 引数の値だけ渡すのが位置引数
  • 「引数名 = 値」の形で渡すのがキーワード引数

以下の関数は引数を3つもっています。

これを実行するときは以下のような方法があります。

このように位置引数でもキーワード引数でもどちらでも関数を実行することができます。

パラメーターオプションとは?

パラメータオプションとは位置専用引数や、キーワード専用引数を指定するためのものです。関数を定義するときにアスタリスク(*)やバックスラッシュ(/)を書いて区別します。

位置専用引数にはキーワード引数は使えませんし、キーワード専用引数には位置引数は使えません。それが「専用」という意味です。

定義の書き方

  • 「/」の前が位置専用
  • 「/」と「*」の間が位置またはキーワード
  • 「*」の後ろがキーワード専用

このルールを守って関数に引数を渡してみましょう。

  • 「1,2」は位置専用引数の「ps1, ps2」に渡される
  • 「3」は位置でもキーワードでもOKな「pk」に渡される
  • 「4」はキーワード専用の「kw」に渡される

関数を定義するときにアスタリスクやバックスラッシュを使いますが、関数に引数を渡すとき(関数を実行するとき)には使いません

以下は正しくない例です。

一つ目はキーワード専用引数が位置引数になっています。

2つ目のエラーは「位置引数はキーワード引数の前に書いてください」という内容です。引数を書く順番が正しくないということです。

ですが、「ps2」は位置専用引数なので順番を正しく書いたところで「ps2=2」では実行できません。以下のようにエラーが出ます。

「ps2は位置専用なのでキーワード引数ではダメ」というエラーが出ています。

位置専用だけ定義する

バックスラッシュだけを使って位置専用引数のみを定義することもできます。

位置専用なので、「引数名 = 値」という形のキーワード引数は使えません。

キーワード専用だけ定義する

アスタリスクだけを使ってキーワード専用引数のみ定義することもできます。

キーワード専用なので「引数名 = 値」というかたちで引数を渡す必要があります。

まとめ

  • 位置引数は値だけ
  • キーワード引数は「引数名 = 値」のかたち
  • パラメータオプションは「*」と「/」
    • 「/」の前が位置専用
    • 「/」と「*」の間が位置またはキーワード(どちらでもOK)
    • 「*」の後ろがキーワード専用

関連記事

プログラミング言語のなかでも人気の高いPythonを学習する教材を紹介します。 最近ではプログラミングスククールがたくさんあるので迷うと思います。 ですが、まずは無料教材から始めてみましょう。苦労した分だけ力がつきます。 […]