アルパカログ

Python デフォルト値のないキーワード引数(Keyword-Only Arguments)

2018年7月30日
🔖Python🔖プログラミング

Python3ではデフォルト値のないキーワード引数を設定することができます。

デフォルト値のないキーワード引数は「Keyword-Only Arguments(キーワード専用引数)」を使って実現できます。

このエントリではKeyword-Only Argumentsについて説明します。

デフォルト値のないキーワード引数

デフォルト値のないキーワード引数は次のように書きます。

def do_something(hoge, fuga, *, foo, bar):
    pass

初めて見た人は*の解釈に困るかもしれません。

この関数は次のようにして呼び出します。

do_something("hoge", "fuga", foo="foo", bar="bar")

ここでPythonの引数について一度おさらいしておきましょう。

Pythonにおける実引数と仮引数

引数には「実引数(argument)」と「仮引数(parameter)」があります。

実引数は関数の呼び出し時に渡す実際の値で、仮引数は関数側で実引数を入れておく仮の容れ物ですね。

Pythonの実引数は「キーワード引数(keyword argument)」と「位置引数(positional argument)」の2種類だけです。

一方、仮引数は位置引数のみ、キーワード引数のみ(キーワード専用引数)、位置引数とキーワード引数、可変長の位置引数、可変長のキーワード引数の5種類あります。

参考

Keyword-Only Argumentsとは?

キーワード専用引数は、可変長位置引数*argsまたは単なる*の後に定義することができます。

よって、下記のfoobarはキーワード専用引数(Keyword-Only Arguments)になります。

def do_something(*, foo, bar):
    pass

キーワード専用引数は必ずしもデフォルト値を持つ必要はありません。

Keyword-only arguments are not required to have a default value.

もちろん、必要であればデフォルト値を定義することもできます。

以上です。このエントリではKeyword-Only Argumentsについて説明しました。

タグ