KAMEYA_WORKS
*args
と **kwargs
の解説*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
**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
*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
を活用すると、柔軟で拡張可能な関数を作成することができます。