[python]*args、**kwargs。可変の引数を使ってみる

python

Pythonでコードを見ている時に*argsや**kwargsが登場しますが、おさらいを兼ねてまとめます。

可変引数とは?

*argsや**kwargsはいわゆる可変長引数と呼ばれるもので、どんな引数の数にも対応した関数を定義することができます。

*argsでは位置引数をタプルにまとめてセットできます。

**kwargsではキーワード引数を辞書にまとめてセットできます。

なお、*や**の後の文字にargsやkwargsが定義されていますが、*以降の文字は好きなもので構いません。

Pythonの慣習として*argsや**kwargsと記述されているようです。

argument = 引数という意味なので、分かりやすいと思います。

 

*argsを使ってみる

複数の引数を取り、それぞれを出力するコードを書いてみます。

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

greet('hello', 'buon giorno', 'こんにちは')

=>
hello
buon giorno 
こんにちは

複数の引数をタプルで取り、それを関数内でforループしています。

引数でそのまま文字列を渡していますが、変数にするとこんな感じ。

english = 'hello'
italy = 'buon giorno'
japanese = 'こんにちは'

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

greet(english, italy, japanese)

 

**kwargsを使ってみる

次に**kwargsについて。こちらは可変長引数の辞書バージョンです。

def greet(**kwargs):
    print(kwargs)

greet(english='hello', italy='buon giorno', japanese='こんにちは')

=>
{'english': 'hello', 'italy': 'buon giorno', 'japanese': 'こんにちは'}

 



カテゴリー