web-dev-qa-db-ja.com

PythonにHinting tupleと入力します

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]):
17
Asara

はい、タプル型ヒントのアイテム数を柔軟にすることができます

from typing import Tuple

def func(var: Tuple[int, ...]):
    pass

ドキュメントから: https://docs.python.org/3/library/typing.html#typing.Tuple

同種の型の可変長タプルを指定するには、リテラルの省略記号を使用します。 Tuple[int, ...]。プレーンなTupleTuple[Any, ...]と同等で、Tupleと同等です。

35
aaron