Python

【Python】*argsと**kwargsとは??

*argsと**kwargsとは??

Pythonのことでググっているとよく目にする、

*args**kwargs

について説明します。

以下のワードは前提知識とします。

・タプル
・リスト
・辞書

・引数(位置引数)
・キーワード引数
・デフォルト引数

*args:複数の位置引数をタプルとして取得

以下のようなコードがあったとします。

def print_func(fruit, drink, animal):
    print(fruit)
    print(drink)
    print(animal)

print_func("りんご", "コーヒー", "ネコ")

綺麗なコードではないですよね。。
まあ、タプルの変数を作れ、と言われればそれまでですが。

このコードを*argsを使って以下のように書き換えれます。

def print_func(*args):
    for arg in args:
        print(arg)

print_func("りんご", "コーヒー", "ネコ")

位置引数で渡した値が、*argsとしてまとめられました。

つまり、タプルで受け取るよーっていう目印になります。

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

今度は、位置引数ではなくキーワード引数として渡すことで、辞書として取得できる書き方になっただけです。

def cafe_menu(**kwargs):
    print(kwargs)

cafe_menu(drink="coffee", food="rice")

出力してみると、以下のようになります。

>>> {‘drink’: ‘coffee’, ‘food’: ‘rice’}

COMMENT

メールアドレスが公開されることはありません。