常に1 つのオブジェクトを返します。usingreturn one, two
は単にタプルを返します。
はい、-> Tuple[bool, str]
完全に正しいです。
タイプだけが、それぞれが異なるタイプを持つ固定数Tuple
の要素を指定できます。関数が固定数の戻り値を生成する場合、特にそれらの値が特定の異なる型である場合は、常にタプルを返す必要があります。
他のシーケンス型は、可変数の要素に対して1 つのtyping.Sequence
型指定を持つことが期待されるため、ここでは適していません。リストとタプルの違いも参照してください。
タプルは異種のデータ構造 (つまり、エントリの意味が異なる) ですが、リストは同種のシーケンスです。タプルには構造があり、リストには順序があります。
Python の型ヒント システムはその哲学に従っており、現在、固定長の iterable を指定し、特定の位置に特定の型を含む構文はありません。
どのイテラブルでも動作することを指定する必要がある場合、できる最善の方法は次のとおりです。
-> Iterable[Union[bool, str]]
この時点で、呼び出し元はブール値と文字列を任意の順序で、未知の長さ (0 から無限大の間の任意の場所) で期待できます。
最後になりましたが、Python 3.9 の時点で、次を使用できます。
-> tuple[bool, str]
の代わりに-> Tuple[bool, str]
; 型ヒント表記のサポートが、ほとんどの標準ライブラリ コンテナー型に追加されました(完全なリストについては、PEP 585を参照してください)。from __future__ import annotations
実際、モジュールにコンパイラ スイッチを使用し、構文をサポートする型チェッカーを使用する場合は、Python 3.7 の時点でもこれを使用できます。