Pythonでは、関数の引数に*args
や**kwargs
を使用することで、可変長の引数を取ることができます。これらの引数は、それぞれタプルと辞書の形式で関数内部に渡されます。
*args
は、関数に渡された位置引数をタプルとしてまとめます。一方、**kwargs
は、関数に渡されたキーワード引数を辞書としてまとめます。
Pythonの型注釈を使用すると、これらの引数の期待する型を指定することができます。例えば、すべての引数が文字列であることを期待する場合、次のように書くことができます:
def foo(*args: str, **kwargs: int):
...
この関数定義では、*args
は文字列のタプルを、**kwargs
はキーが文字列で値が整数の辞書を期待します。
しかし、*args
や**kwargs
を使用すると、関数が受け取る引数の数は可変となります。そのため、関数が特定の数の引数を受け取ることを強制するためには、明示的な位置引数とキーワード引数を使用することが推奨されます。例えば、関数が1つまたは2つの整数を受け取ることを期待する場合、次のように書くことができます:
from typing import Optional
def foo(first: int, second: Optional[int] = None):
...
この関数定義では、first
は必須の整数引数で、second
はオプションの整数引数です。second
はデフォルトでNone
となっており、呼び出し時に指定しなかった場合はこの値が使用されます。
以上が、Pythonの*args
と**kwargs
の型注釈についての基本的な説明です。これらの機能を理解し、適切に使用することで、Pythonのコードはより柔軟で読みやすくなります。