【ITニュース解説】*args and kwargs in Python in Simple Terms
2025年09月03日に「Medium」が公開したITニュース「*args and kwargs in Python in Simple Terms」について初心者にもわかりやすいように丁寧に解説しています。
ITニュース概要
Pythonの`*args`と`**kwargs`は、関数に可変個の引数を渡すための機能。`*args`は位置引数をタプルとして、`**kwargs`はキーワード引数を辞書として受け取る。これらを使うことで、引数の数を事前に決めずに柔軟な関数を定義できる。初心者でも、様々な引数に対応できる関数を簡単に実装可能になる。
ITニュース解説
Pythonの*argsと**kwargsは、関数を定義する際に、可変長の引数を受け取れるようにするための特別な記法だ。これらを理解することで、より柔軟で汎用性の高い関数を作れるようになる。
まず、*argsについて説明する。*argsは、関数に渡される位置引数(引数の順番が重要な引数)を、タプルとしてまとめて受け取る。例えば、以下のような関数を考えてみよう。
1def my_function(*args): 2 for arg in args: 3 print(arg) 4 5my_function(1, 2, 3)
この例では、my_functionは*argsを使って、任意の数の引数を受け取ることができる。my_function(1, 2, 3)と呼び出すと、argsは(1, 2, 3)というタプルになる。そして、forループを使って、タプルの中身を順番に出力している。
*argsを使うメリットは、関数の引数の数を事前に決めなくても良い点だ。引数の数が変わる可能性のある場合に便利だと言える。例えば、合計を計算する関数を作る場合、引数の数が固定されていると、引数の数を増やすたびに、関数の定義を書き換える必要が出てくる。しかし、*argsを使えば、引数の数がいくつであっても対応できる。
次に、**kwargsについて説明する。**kwargsは、関数に渡されるキーワード引数(引数名=値の形式で渡される引数)を、辞書としてまとめて受け取る。以下に例を示す。
1def my_function(**kwargs): 2 for key, value in kwargs.items(): 3 print(f"{key}: {value}") 4 5my_function(name="Taro", age=30, city="Tokyo")
この例では、my_functionは**kwargsを使って、任意の数のキーワード引数を受け取ることができる。my_function(name="Taro", age=30, city="Tokyo")と呼び出すと、kwargsは{'name': 'Taro', 'age': 30, 'city': 'Tokyo'}という辞書になる。そして、kwargs.items()を使って、辞書のキーと値を順番に出力している。
**kwargsを使うメリットは、関数に渡す引数の名前を自由に決められる点だ。これにより、関数の可読性を高めることができる。例えば、設定値を関数に渡す場合、キーワード引数を使うことで、どの設定値がどの変数に対応するかを明確にできる。
*argsと**kwargsは、組み合わせて使うことも可能だ。以下に例を示す。
1def my_function(*args, **kwargs): 2 print("Positional arguments:") 3 for arg in args: 4 print(arg) 5 6 print("\nKeyword arguments:") 7 for key, value in kwargs.items(): 8 print(f"{key}: {value}") 9 10my_function(1, 2, name="Taro", age=30)
この例では、my_functionは*argsと**kwargsの両方を使って、位置引数とキーワード引数の両方を受け取ることができる。my_function(1, 2, name="Taro", age=30)と呼び出すと、argsは(1, 2)というタプルになり、kwargsは{'name': 'Taro', 'age': 30}という辞書になる。
*argsと**kwargsを使う際の注意点として、関数の引数の定義順序がある。*argsは、**kwargsよりも前に定義する必要がある。もし順番が逆になると、Pythonのインタプリタがエラーを発生させる。
また、*argsと**kwargsの名前は、必ずしもargsとkwargsである必要はない。しかし、慣習的にargsとkwargsが使われることが多い。これらの名前を使うことで、他のプログラマがコードを理解しやすくなる。
*argsと**kwargsは、Pythonの強力な機能の一つだ。これらを使いこなすことで、より柔軟で汎用性の高い関数を作ることができる。システムエンジニアを目指す上で、これらの概念を理解しておくことは、非常に重要だと言える。これらの知識は、様々なライブラリやフレームワークを利用する際にも役立つだろう。