Pythonでは、関数を定義する際に引数の数を固定する必要がありません。可変長引数を使用することで、任意の数の引数を関数に渡すことができます。ここでは、*args
と**kwargs
の使い方について詳しく説明します。
*args
の使い方*args
は、関数に可変数の位置引数を渡すための構文です。*
を付けることで、引数をタプルとして受け取ります。
def sum_numbers(*args):
total = 0
for num in args:
total += num
return total
result = sum_numbers(1, 2, 3, 4, 5)
print(result) # 出力: 15
def sum_numbers(*args):
では、*args
を使って任意の数の引数を受け取る関数を定義しています。args
はタプルとして受け取られ、関数内部でループを使って合計を計算しています。sum_numbers(1, 2, 3, 4, 5)
と呼び出し、結果として15が出力されます。**kwargs
の使い方**kwargs
は、関数に可変数のキーワード引数を渡すための構文です。**
を付けることで、引数を辞書として受け取ります。
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Alice", age=30, city="Tokyo")
def print_info(**kwargs):
では、**kwargs
を使って任意の数のキーワード引数を受け取る関数を定義しています。kwargs
は辞書として受け取られ、items()
メソッドを使ってキーと値のペアをループで出力しています。print_info(name="Alice", age=30, city="Tokyo")
と呼び出すと、以下のように出力されます。
name: Alice
age: 30
city: Tokyo
*args
と **kwargs
を同時に使う*args
と**kwargs
を同時に使用することもできます。この場合、位置引数を最初に書き、次に可変長引数、最後にキーワード引数を定義します。
def describe_pet(pet_name, *args, **kwargs):
print(f"ペットの名前: {pet_name}")
if args:
print("特性:")
for trait in args:
print(f"- {trait}")
if kwargs:
print("情報:")
for key, value in kwargs.items():
print(f"{key}: {value}")
describe_pet("Buddy", "元気", "愛らしい", age=5, breed="Golden Retriever")
def describe_pet(pet_name, *args, **kwargs):
では、ペットの名前と特性、さらに追加情報を受け取る関数を定義しています。pet_name
は通常の引数、args
は特性を、kwargs
はその他の情報(年齢、品種など)を受け取ります。describe_pet("Buddy", "元気", "愛らしい", age=5, breed="Golden Retriever")
により、以下のように出力されます。 ペットの名前: Buddy
特性:
- 元気
- 愛らしい
情報:
age: 5
breed: Golden Retriever
*args
を使用すると、可変数の位置引数をタプルとして受け取ることができ、関数内で簡単に処理できます。**kwargs
を使用すると、可変数のキーワード引数を辞書として受け取り、柔軟な引数の扱いが可能となります。このように、可変長引数を活用することで、より柔軟で再利用可能な関数を作成することができます。実際のプロジェクトでも積極的に利用してみてください。