Pythonの可変長引数(*args, **kwargs)の使い方

関数定義で引数に***(1個または2個のアスタリスク)をつけると、呼び出し時に任意の数の引数(可変長引数)を指定できる。慣例として*args**kwargsという名前が使われることが多いが、***が頭についていれば他の名前でも問題ない。以下のサンプルコードでは*args**kwargsという名前を使う。

*args: 複数の引数をタプルとして受け取る

def shop(name,*args):
    print("flowershop:", name)
    for arg in args:
        print(arg)

shop("Iris","Open: 9:30 am","Close: 10:30 pm","Monday and holidays are closed.") 
flowershop: Iris
Open: 9:30 am
Close: 10:30 pm
Monday and holidays are closed.

**kwargs: 複数のキーワード引数を辞書として受け取る

**kwargsのように**をつけた引数を定義すると、呼び出し時に任意の数のキーワード引数を指定できる。
関数の中では引数名がキーkey、値がvalueとなる辞書として受け取られる。

def shop(name, **kwargs):
    keys = sorted(kwargs.keys())
    for kw in keys:
        print(kw, ":", kwargs[kw])

shop("Iris",bouquet="Sunflower",plants="Pachira",dried="Rose") 
bouquet : Sunflower
dried : Rose
plants : Pachira

*argsと**kwargsを組み合わせて受け取る

def shop(name,*args, **kwargs):
    print("flowershop:", name)
    for arg in args:
        print(arg)
    print("**Recommended**")
    keys = sorted(kwargs.keys())
    for kw in keys:
        print(kw, ":", kwargs[kw])

shop("Iris","Open: 9:30 am","Close: 10:30 pm","Monday and holidays are closed.",bouquet="Sunflower",plants="Pachira",dried="Rose") 
flowershop: Iris
Open: 9:30 am
Close: 10:30 pm
Monday and holidays are closed.
**Recommended**
bouquet : Sunflower
dried : Rose
plants : Pachira

この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

関連記事

コメント

この記事へのコメントはありません。