*args と **kwargs とは
Pythonでは、*args
と**kwargs
は一般的に使用される用語であり、関数に可変長引数を渡すために使用されます。*args
と**kwargs
の両方は、関数定義で明示的に定義することなく、可変長の引数を関数に渡すことを許可する特別な構文です。
*args
は "arguments "の略語であり、キーワードでない可変長引数を関数に渡すために使用されます。一方、 **kwargs
は "keyword arguments "の略語であり、キーワード引数の可変長を関数に渡すために使用されます。
*args
と**kwargs
を使用すると、異なる数の引数またはキーワード引数を処理できる柔軟な関数を作成したい場合に非常に便利です。
*args の使い方
*args
を使用するには、単に関数定義のパラメータ名の前にアスタリスク(*
)を含めます。これにより、追加の位置引数がタプルに収集され、パラメータ値として関数に渡されることがPythonに伝えられます。
*args
を受け入れる関数の例を次に示します。
def sum_numbers(*args):
total = 0
for number in args:
total += number
return total
この例では、 sum_numbers
関数は任意の数の引数を受け取り、それらを合計します。例えば、この関数を異なる数の引数で呼び出すことができます。
print(sum_numbers(1, 2, 3)) # Output: 6
print(sum_numbers(1, 2, 3, 4, 5)) # Output: 15
print(sum_numbers(2, 4, 6, 8, 10, 12)) # Output: 42
*args
を使用すると、関数定義で各引数を明示的に定義する必要なく、可変数の引数を処理できます。
**kwargs の使い方
**kwargs
を使うには、関数のシグネチャに2つのアスタリスク(**
)を持つパラメータを定義する必要があります。このパラメータには、関数に渡された全てのキーワード引数の辞書が渡されます。
Pythonで**kwargs
を使用する方法の例を次に示します。
def my_function(\*\*kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
my_function(name="John", age=30, city="New York")
この例では、**kwargs
構文を使用して可変数のキーワード引数を持つmy_function
関数を定義します。その後、関数は、.items()
メソッドを使用してキーワード引数の辞書をループ処理し、各キーと値を出力します。
my_function(name="John", age=30, city="New York")
で関数を呼び出すと、出力は次のようになります。
name: John
age: 30
city: New York
また、辞書を**kwargs
を使用する関数に渡す場合は、辞書を展開するために二重アスタリスク(**
)構文を使用することもできます。次に例を示します。
def my_function(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
my_dict = {"name": "John", "age": 30, "city": "New York"}
my_function(**my_dict)
この例では、3つのキーと値のペアを持つ辞書my_dict
を定義します。その後、二重アスタリスク(**
)構文を使用して辞書を展開し、その内容を関数のキーワード引数として渡してmy_function
を呼び出します。
このコードを実行すると、前と同じ出力が得られます。
name: John
age: 30
city: New York