キーワード引数の辞書化
簡単なキーワード引数を使った関数を定義します。
def menu(entree = 'beef', drink = 'wine'):
print(entree, drink)
menu(entree = 'beef', drink = 'coffee')
beef coffee
では、キーワード引数を追加したい場合を考えてみます。
引数を追加する **(アスタリスク2個) kwargs(key word arguments)
**kwargsを使うと引数を追加が簡単に可能になります。
def menu(**kwargs):
print(kwargs)
menu(entree = 'beef', drink = 'coffee', dessert = 'ice')
{‘entree’: ‘beef’, ‘drink’: ‘coffee’, dessert: ‘ice’}
辞書型でmenuの中身が出てきます。
そこで、for loopを使い、関数(function)でキーワードと値を処理できます。
def menu(**kwargs):
for k, v in kwargs.items():
print(k, v)
menu(entree = 'beef', drink = 'coffee', dessert = 'ice')
entree beef
drink coffee
dessert ice
他の方法 d{}辞書型で記入して、**アスタリスク2個+d を渡してやります。
def menu(**kwargs):
for k, v in kwargs.items():
print(k, v)
d = {
'entree': 'beef',
'drink': 'ice cofee',
'dessert': 'ice'
}
menu(**d)
entree beef
drink ice cofee
dessert ice
位置引数 タプル化 辞書化 をすべてまとめる。
位置引数:food
タプル化:*args
辞書化:**kwargs
def menu(food, *args, **kwargs):
print(food)
print(args)
print(kwargs)
menu('banana', 'apple', 'orange', entree='beef', drink='coffee')
banana
('apple', 'orange')
{'entree': 'beef', 'drink': 'coffee'}
夫々に対応しています。
food → banana 最初の引数はfood に入ります。
*args → apple orange 複数の引数がまとまってタプル化されています。
**kwargs → entree beef drink cofee キーワード引数が辞書型として入っています。
コメント