可変長引数とは、「任意の数の引数を受けてるための引数」です。実際に簡単なサンプルを見てみましょう。
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'}
この場合も引数の順番に注意する必要があります。キーワード指定しない場合は、可変長引数を最後に指定する必要があります。
辞書として受け取る場合は、通常の引数の前に「∗∗」を付けた引数を記述することはできません。
ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!
これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。
もちろん無料です!!
↓メールマガジン購読はこちら↓