Python3ではデフォルト値のないキーワード引数を設定することができます。
デフォルト値のないキーワード引数は「Keyword-Only Arguments(キーワード専用引数)」を使って実現できます。
このエントリではKeyword-Only Argumentsについて説明します。
デフォルト値のないキーワード引数は次のように書きます。
def do_something(hoge, fuga, *, foo, bar):
pass
初めて見た人は*
の解釈に困るかもしれません。
この関数は次のようにして呼び出します。
do_something("hoge", "fuga", foo="foo", bar="bar")
*
を境界に引数の与え方が異なっています。
ここでPythonの引数について一度おさらいしておきましょう。
引数には「実引数(argument)」と「仮引数(parameter)」があります。
実引数は関数の呼び出し時に渡す実際の値で、仮引数は関数側で実引数を入れておく仮の容れ物ですね。
- 実引数: 関数の呼び出し時に実際に与える値
- 仮引数: 関数側で実引数を入れる仮の変数
Pythonの実引数は「キーワード引数(keyword argument)」と「位置引数(positional argument)」の2種類だけです。
一方、仮引数は位置引数のみ、キーワード引数のみ(キーワード専用引数)、位置引数とキーワード引数、可変長の位置引数、可変長のキーワード引数の5種類あります。
- 実引数の種類
- キーワード引数(keyword argument)
- 位置引数(positional argument)
- 仮引数の種類
- 位置引数のみ
- キーワード引数のみ(キーワード専用引数)
- 位置引数とキーワード引数
- 可変長の位置引数
- 可変長のキーワード引数
参考
キーワード専用引数は、可変長位置引数*args
または単なる*
の後に定義することができます。
よって、下記のfoo
やbar
はキーワード専用引数(Keyword-Only Arguments)になります。
def do_something(*, foo, bar):
pass
キーワード専用引数は必ずしもデフォルト値を持つ必要はありません。
Keyword-only arguments are not required to have a default value.
もちろん、必要であればデフォルト値を定義することもできます。
以上です。このエントリではKeyword-Only Argumentsについて説明しました。
コメントを送る
コメントはブログオーナーのみ閲覧できます