pythonの可変長引数について

可変長引数

可変長引数とは、「任意の数の引数を受けてるための引数」です。実際に簡単なサンプルを見てみましょう。

def test (arguments1, *arguments2):
	print(arguments1,arguments2)

test(1,2,3,4,5)

引数を可変長引数にするには、アスタリスク(∗)を引数の先頭に付与します。関数testでarguments1とarguments2の2つの引数を定義しています。2つめのarguments2の先頭は「∗」を

上記コードを実行すると以下の様な結果になります。

% python arg.py
1 (2, 3, 4, 5)

実行結果を見ると、可変長引数に代入された値は、タプルとして表示されています。

引数を可変長引数にする時の注意点

引数を可変長引数として使用する場合、引数の順番に注意する必要があります。キーワード指定しない場合は、可変長引数を最後に指定する必要があります。

先程のサンプルから可変長引数の順番を変えてみます。

def test (*arguments1, arguments2):
	print(arguments1,arguments2)

test(1,2,3,4,5)

実行結果は以下の通りです。

% python arg.py
Traceback (most recent call last):
  File "arg.py", line 4, in <module>
    test(1,2,3,4,5)
TypeError: test() missing 1 required keyword-only argument: 'arguments2'

上記のようにエラーが出力されます。

可変長引数を前に指定する場合

可変長引数を通常の引数より前に指定したい場合は、通常の引数をキーワード引数として呼び出す必要があります。

def test (*arguments1, arguments2):
	print(arguments1,arguments2)

test(1,2,3,4,arguments2=5)

実行結果は以下の通りです。

% python arg.py
(1, 2, 3, 4) 5

可変長引数の用途

実際に可変長引数を使用するケースとして、複数の値を引数に代入する場合があげられます。

def test (*arguments1):
	sum = 0
    for n in arguments1:
    	sum += n
	print(sum)

test(1,2,3,4,5)

上記サンプルは、複数の数値を可変長引数に代入し、関数testの中で引数の合計を求めて表示させるサンプルです。
実行結果は以下の通りです。

 % python arg.py
15

可変長引数を辞書として受け取る

引数の先頭に「∗∗」とアスタリスクを2つ続けるて入力すると、任意の数の引数を辞書として受け取ることができます。

def test (**kwarguments):
        print(kwarguments)

test(num='1',code='hoge',result='NG')

実行結果は以下の通りです。

 % python arg.py
{'code': 'hoge', 'num': '1', 'result': 'NG'}

この場合も引数の順番に注意する必要があります。キーワード指定しない場合は、可変長引数を最後に指定する必要があります。
辞書として受け取る場合は、通常の引数の前に「∗∗」を付けた引数を記述することはできません。

関連記事

メールマガジン

ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!

「初心者にも理解できるネットワーク技術」

これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。

もちろん無料です!!

↓メールマガジン購読はこちら↓

メールアドレス: