List
モジュールからTuple
、typing
などを使用することの違いは何ですか:
from typing import Tuple
def f(points: Tuple):
return map(do_stuff, points)
Pythonの型を直接参照するのとは対照的に:
def f(points: Tuple):
return map(do_stuff, points)
そして、いつ一方を使用する必要がありますか?
typing.Tuple
およびtyping.List
are 汎用タイプ ;これは、contentsのタイプを指定できることを意味します。
def f(points: Tuple[float, float]):
return map(do_stuff, points)
これは、渡されるTupleに2つのfloat
値が含まれている必要があることを指定します。組み込みのTuple
タイプではこれを行えません。
typing.Tuple
は、特定の要素数と各位置のタイプを指定できるという点で特別です。長さが設定されておらず、タイプを繰り返す必要がある場合は、省略記号を使用します:Tuple[float, ...]
は、可変長のTuple
とfloat
sを記述します。
にとって - typing.List
およびその他のシーケンスタイプは通常、すべての要素のタイプのみを指定します。 List[str]
は、任意のサイズの文字列のリストです。関数は優先的に typing.Sequence
は引数として、typing.List
は通常、戻り型にのみ使用されます。一般的に、ほとんどの関数は任意のシーケンスを取り、反復するだけですが、list
を返すと、特定の可変シーケンスタイプが実際に返されます。
現在コンテンツを制限していない場合でも、常にtyping
ジェネリックを選択する必要があります。結果の変更が小さくなるので、後でジェネリック型を使用してその制約を追加する方が簡単です。