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'
は関数menu
のfood
で受け取るので
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ですが
基本を抑えておきたいと思います。