猫型エンジニアのブログ

プログラム/ネットワーク系の技術関連をまとめたページです 

Pythonにおける引数の取り扱い

 Pythonソースコードを読んでいると、よく*argsや**keyargsといった文字が関数の引数にでてきます。これらの使い方に関してです。

キーワード引数

 別名名前付き引数ともいいます。以下の使い方のように引数に名前と初期値をあらかじめ設定しておくことができます。
 こうすることで、定数の値を含む関数の呼び出しを簡潔に書くことができます。

>>> def func(var, const='Const'):
...     print var, const
... 
>>> func(1)
1 Const
>>> func(1, const='Modified')
1 Modified

可変数個の引数

 上の例では、あらかじめ引数の数はvarとconstの2つということがきまっています。複数個の引数を取り扱う際には*や**を使用します。
 この場合キーワード引数かどうかで使い分ける必要があります。

タプル型の可変個の引数

 *がついた引数は、可変個の引数を受け取りタプル型で格納します。

>>> def func(*var):
...     print var
... 
>>> func(1,2,3,4,5)
(1, 2, 3, 4, 5)
>>> func('a', 'b', 'c')
('a', 'b', 'c')
辞書型の可変個の引数

 **がついた引数は、可変個の「キーワード引数」を受け取り辞書型で格納します。

>>> def func(**var):
...     print var
... 
>>> func(a=1, b=2, c=3)
{'a': 1, 'c': 3, 'b': 2}
>>> func(a=1, b=2, c=3, d='test')
{'a': 1, 'c': 3, 'b': 2, 'd': 'test'}