【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`はキーワード引数を辞書として受け取る。これらを使うことで、引数の数を事前に決めずに柔軟な関数を定義できる。初心者でも、様々な引数に対応できる関数を簡単に実装可能になる。

出典: *args and kwargs in Python in Simple Terms | Medium公開日:

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の名前は、必ずしもargskwargsである必要はない。しかし、慣習的にargskwargsが使われることが多い。これらの名前を使うことで、他のプログラマがコードを理解しやすくなる。

*args**kwargsは、Pythonの強力な機能の一つだ。これらを使いこなすことで、より柔軟で汎用性の高い関数を作ることができる。システムエンジニアを目指す上で、これらの概念を理解しておくことは、非常に重要だと言える。これらの知識は、様々なライブラリやフレームワークを利用する際にも役立つだろう。

【ITニュース解説】*args and kwargs in Python in Simple Terms | いっしー@Webエンジニア