Python 入門 ノート (42)キーワード引数の辞書化

キーワード引数の辞書化

簡単なキーワード引数を使った関数を定義します。

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  キーワード引数が辞書型として入っています。

ただし、順序は(food→*args→**kwargs)変更できません。 例えば def menu(food, **kwargs、*args,): はエラーが返ります。

コメント