*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’}