Pythonでタプルをタイプヒントしたいとき:
def func(var: Tuple[int, int]):
# do something
func((1, 2)) # would be fine
func((1, 2, 3)) # would throw an error
タプル内のアイテムの正確な数を指定する必要があります。これはリストのタイプヒンティングとは異なります:
def func(var: list[int]):
# do something
func([1]) # would be fine
func([1, 2]) # would also be fine
func([1, 2, 3]) # would also be fine
これは、タプルのタイプが原因で、ある意味で必然的に発生します。それらは変更されないように設計されているため、その中のアイテムの量をハードコーディングする必要があります。
だから私の質問は、タプル型ヒントの項目数を柔軟にする方法はありますか?私はそのようなことを試しましたが、うまくいきませんでした:
def func(var: Tuple[*int]):
はい、タプル型ヒントのアイテム数を柔軟にすることができます:
from typing import Tuple
def func(var: Tuple[int, ...]):
pass
ドキュメントから: https://docs.python.org/3/library/typing.html#typing.Tuple
同種の型の可変長タプルを指定するには、リテラルの省略記号を使用します。
Tuple[int, ...]
。プレーンなTuple
はTuple[Any, ...]
と同等で、Tuple
と同等です。