0
8

More than 3 years have passed since last update.

Pythonでの引数渡し便利技(タプル、辞書型)

Posted at

Pythonで関数に引数を渡すときの便利技

仮に文字列を送るとして、関数に引数を送る際に
変数、タプル型、辞書型で受けとらせる方法が以下の通り。

function.py
# ****************
# *  2020.07.08
# *   ProOJI
# ****************


def menu(food, *args, **kwargs):
    print(food)
    # タプル
    print(args)
    print('args[0] = ' + args[0])
    print('args[1] = ' + args[1])
    # 辞書型
    print(kwargs)
    # KeyとValueを分けて出力も可能
    for k,v in kwargs.items():
        print('Key is '+k+'. Value is '+v+ '.')


menu('Apple', 'Banana', 'Orange', entree='Beef', drink='Beer')

初めの引数'Apple'は関数menufoodで受け取るので

    print(food) # 出力:Apple

となります。
次は関数menu側にアスタリスク1つ付いた*argsがあります。
これは複数の引数をタプルで受け取ります。以下の通りです。

    print(args) # 出力:('Banana', 'Orange')

タプルは配列のように扱うこともできますので
以下のように値を拾うことも可能です。

    print('args[0] = ' + args[0])
    # 出力:args[0] = Banana
    print('args[1] = ' + args[1])
    # 出力:args[1] = Orange

最後に関数menu側にアスタリスク2つ付いた**kwargsがありますが
これは辞書型で受け取ることができます。
引数としてentree='Beef', drink='Beer'を送っていますが
Key"entree": Value"Beef"
Key"drink": Value"Beer"という形式の辞書型で受け取ります。
結果、普通にprint()で出力すると

print(kwargs) # 出力:{'entree': 'Beef', 'drink': 'Beer'}

となりますが、for k,v in kwargs.items():によりそれぞれを取得して

    for k,v in kwargs.items():
        print('Key is '+k+'. Value is '+v+ '.')
    # 出力
    # Key is entree. Value is Beef.
    # Key is drink. Value is Beer.

とすることもできます。

まとめ

関数の値渡しの方法は様々で工夫次第で便利に活用できます。
様々なフレームワークやライブラリと併せて使用するPythonですが
基本を抑えておきたいと思います。

0
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
8