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'}

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

おすすめ記事

  • 【特集】 会計システムがモバイル活用できない!KDDIの選択は?
  • 【特集】 FacebookやGoogleが参加するOCPとは何か、日本企業にメリットは
  • 【特集】 AIのビジネス利用、国内市場規模は5年で16倍に成長
  • 【特集】 LPWA徹底比較 NB-IoT、LTE-M、LoRaWAN、Sigfox…本命は?
  • 【特集】 IT関連の資格取得状況(2017年)・後編
  • 関連記事

    メールマガジン

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

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

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

    もちろん無料です!!

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

    メールアドレス:

    検索

    特集

    初心者のためのciscoルータの管理

    目指せPMP


    著書

    図解入門 よくわかる最新ネットワーク技術の基本と仕組み

    初心者のためのCiscoルータ運用ガイド: 最速でCiscoルータを理解するための解説書

    目指せPMP PMBOK第5版対応: 最速でPMPに合格するための解説書

    見てわかるTCP/IP

    おすすめ記事

    カテゴリ

    ブログ最新記事