<< home

*args**kwargs の解説

1. *args

*args は、関数に渡される任意の数の位置引数を受け取るために使います。args は慣習的な名前であり、他の名前を使うこともできますが、* は必須です。これにより、関数に渡される引数をタプルとして受け取ります。

使用例

def sample_function(*args): for arg in args: print(arg) sample_function(1, 2, 3, 4)

上記の例では、関数 sample_function に 4 つの引数(1, 2, 3, 4)が渡され、args にタプル (1, 2, 3, 4) が格納されます。関数内でその値を1つずつ取り出して表示します。

結果

1 2 3 4

2. **kwargs

**kwargs は、関数に渡される任意の数のキーワード引数を受け取るために使います。kwargs は慣習的な名前であり、他の名前を使うこともできますが、** は必須です。これにより、関数に渡される引数を辞書として受け取ります。

使用例

def sample_function(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}")
sample_function(a=1, b=2, c=3)

上記の例では、関数 sample_function にキーワード引数 a=1, b=2, c=3 が渡され、kwargs に辞書 {'a': 1, 'b': 2, 'c': 3} が格納されます。関数内でその辞書をループしてキーと値を表示します。

結果

a: 1 b: 2 c: 3

3. *args**kwargs の組み合わせ

*args**kwargs を同じ関数内で組み合わせて使用することもできますが、必ず *args を先に記述し、**kwargs を後に記述する必要があります。

使用例

def sample_function(arg1, *args, kwarg1="default", **kwargs): print(arg1) print(args) print(kwarg1) print(kwargs)
sample_function(1, 2, 3, 4, kwarg1="changed", key1="value1", key2="value2")

結果

1 (2, 3, 4) changed {'key1': 'value1', 'key2': 'value2'}

まとめ

*args は位置引数をタプルとして受け取ります。 **kwargs はキーワード引数を辞書として受け取ります。 両者を組み合わせて使う場合、*args を先に、**kwargs を後に書く必要があります。 このように、*args**kwargs を活用すると、柔軟で拡張可能な関数を作成することができます。


<< home