スポンサーリンク

【Python】*args, **kwargsの使い方

スポンサーリンク
スポンサーリンク
この記事は約3分で読めます。

*args, **kwargsは可変長引数。異なる数の引数を関数に渡せる

*args, **kwargsは引数(いくつになるか事前にはわからない)を関数に渡すために使用される。

いくつになるか事前にはわからないので可変長引数と呼ばれる

 

通常、関数には引数が定められている。関数を呼び出したときに渡す引数の過不足があるとエラーが発生することがあるが、可変長引数を用いることで、好きな数の引数を関数に渡すことができる。

 

*argsは好きな数の引数を関数に渡すために使用する。

※好きな数の引数は可変長の位置引数と呼ばれ、渡される順序に依存する。

 

**kwargsは好きな数の引数を、キーとバリューのペア(辞書)として関数に渡すために使用する。

※キー・バリューのペアとしての好きな数の引数は、可変長のキーワード引数と呼ばれる。

 

可変長とは、引数の数が毎回異なっていても良いということ。

通常、関数は引数が決まっており、関数に渡す引数に過不足があるとエラーが発生する。

しかし、可変長引数を使うことで毎回異なる数の引数を渡すことができる。

 

役に立つ場面の一例として、ある関数では引数に対して共通の処理を行いたいが、その引数は別の処理によって生み出されるもので、

いくつになるかがわからないといった場合が挙げられる。

 

*argsに渡す位置引数とは関数に順番に渡す引数のこと。

単純に好きな数の引数を渡せと捉えて良い。

 

**kwargsに渡すキーワード引数とは、関数にキーと値のペアで渡される引数のこと。

辞書を引数として渡すことができると考えるとイメージしやすい。

 

 

可変長引数 *args, **kwargsの使い方

 

*argsで関数に可変長の位置引数を渡す

 

使用例

[1]~[3]までは好きな数の引数を関数に渡している。
[4]~[7]までは好きな数のリスト、タプル、辞書を関数に渡している。

*argsは通常の引数の後につける

可変長引数の*argsは通常の引数に後につける。

 

可変長引数の後に通常の引数をつけるとエラーが発生する。

*argsの後に通常の引数を定めると、可変長引数と通常の引数の境目がわからないためにエラーが発生している。
[1]では全ての引数が*argsに渡され、greetingには何も渡されていないことをエラーメッセージが伝えている。
[2]のように、1,2,3を渡した後で、greeting = “Hello World”とすることで渡すことはできる。
そこで、以下のように通常の引数を定めてから可変長引数をつけると、わざわざ引数名を指定して渡す必要がなくなる。

 

 

**kwargsに可変長のキー・バリューの引数を渡す

 

使用例

key1、key2がキー、”value1″、”value2″が値として関数に渡されている。

辞書を作る時は{“key1″:”value1”, “key2″:”value2”}とするが、可変長引数の場合はキーには文字列としての引用符(“”)はつけない。

 

 

*args,**kwargsを組み合わせて使う

 

*args,**kwargsは組み合わせて使うことができる。

*argsは**argsの前に使用する決まりがある。

コメント