Pythonの可変長引数の使い方
Pythonでは可変長引数を扱うことができます。
可変長引数は関数の引数の個数を指定せず、引数を渡す方法です。
Pythonの可変長引数の使い方
Pythonの可変長引数の関数を作るには引数に「*(アスタリスク)」をつけて宣言します。
可変長引数には「*(アスタリスク)1つのタプル(tuple)型」と「**(アスタリスク)2つの辞書(dict)型」があります。
def 関数名( 引数1, 引数2, *可変長引数, **可変長引数 ) : pass
可変長引数・タプル(tuple)型
Pythonで可変長引数を「*(アスタリスク)」で宣言するとその引数はタプル(tuple)型になります。
def func1( *args ) : print( "args type={}".format( type( args ))) for val in args : print( "val={}".format( val )) func1( "トラスト太郎", 25, 175, 60 )
上記のコードを実行すると
args type=<class 'tuple'> val=トラスト太郎 val=25 val=175 val=60
となります。
可変長引数のtypeの結果が「
可変長引数の後ろには普通の引数は置けない
可変長引数の後ろには普通の引数は置けません。
def func1( *args, param ) : print( "args type={}".format( type( args ))) for val in args : print( "val={}".format( val )) func1( "トラスト太郎", 25, 175, 60, 300 )
上記のコードの実行結果は
Traceback (most recent call last): File "C:\main.py", line 6, in <module> func1( "トラスト太郎", 25, 175, 60, 300 ) TypeError: func1() missing 1 required keyword-only argument: 'param'
となりエラーになります。
ただし、キーワード引数を置くことはできます。
def func1( *args, param ) : print( "args type={}".format( type( args ))) for val in args : print( "val={}".format( val )) print( "pram={}".format( param )) func1( "トラスト太郎", 25, 175, 60, param=300 )
上記のコードの実行結果は
args type=<class 'tuple'> val=トラスト太郎 val=25 val=175 val=60 pram=300
と正常に実行できます。
可変長引数・辞書型
Pythonで可変長引数を「**(アスタリスク2つ)」で宣言するとその引数は辞書(dict)型になります。
def func1( *args, **kwargs ) : print( "args type={}".format( type( args ))) for val in args : print( "val={}".format( val )) print( "kwargs type={}".format( type( kwargs ))) print( "param={}".format( kwargs[ "param" ] )) for key, val in kwargs.items() : print( "{}={}".format( key, val )) func1( "トラスト太郎", 25, 175, 60, param=300, param2=400 )
上記のコードを実行すると
args type=<class 'tuple'> val=トラスト太郎 val=25 val=175 val=60 kwargs type=<class 'dict'> param=300 param=300 param2=400
と「kwargs」が辞書(dict)型であつかわれ引数が展開されていることがわかります。
まとめ
Pythonの可変長引数には2つの方法があり「*(アスタリスク)」でタプル(tuple)型、「**(アスタリスク2つ)」で辞書(dict)型の可変長引数を受け取ることができます。
リンク