Pythonでは、関数が不確定な数の引数を取り扱うために*args
と**kwargs
という特性があります。これらはそれぞれ任意の数の位置引数とキーワード引数を関数に渡すための構文です。
*argsについて
*args
は「任意の数の位置引数」を関数に渡すための構文です。この*
記号がポイントで、これによって引数がタプルとして関数に渡されます。
def func(*args):
for arg in args:
print(arg)
func('apple', 'banana', 'cherry')
# 出力結果:
# apple
# banana
# cherry
上記の例では、関数func
は任意の数の引数を受け取り、それらを一つずつ表示します。
**kwargsについて
**kwargs
は「任意の数のキーワード引数」を関数に渡すための構文です。この**
記号により、キーワード引数が辞書として関数内に渡されます。
def func(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
func(name='Alice', age=25, hobby='coding')
# 出力結果:
# name: Alice
# age: 25
# hobby: coding
この例では、関数func
は任意の数のキーワード引数を受け取り、それらのキーと値を表示します。
argsと*kwargsの注意点
重要な注意点として、*args
は必ず普通の引数よりも後に位置しなければならないというルールがあります。これは、Pythonが普通の引数と*args
の区別がつかないためです。
def func(*args, a):
print(a)
for arg in args:
print(arg)
# 関数を呼び出す
func(1, 2, 3, 4, a=5)
# TypeError: func() missing 1 required keyword-only argument: 'a'
以上、Pythonの*args
と**kwargs
についての基本的な説明でした。これらを理解することで、Pythonの関数がより柔軟に引数を扱えるようになります。