[解決済み】複数の戻り値を持つ型にアノテーションを付けるには?
質問
を返す関数にアノテーションを付けるには、どのようにタイプヒントを使用すればよいですか?
Iterable
という2つの値を常に生成します。
bool
と
str
? ヒントは
Tuple[bool, str]
は近いですが、戻り値の型をジェネレータや他の反復可能な型ではなく、タプルに限定していることを除けば、です。
というのも、ある関数にアノテーションを付けたいからです。
foo()
このように複数の値を返すために使用されます。
always_a_bool, always_a_str = foo()
通常、以下のような関数は
foo()
のようなことをします。
return a, b
(これはタプルを返します) しかし、私は型ヒントに、返されたタプルをジェネレータやリストや他のものに置き換えるのに十分な柔軟性が欲しいのです。
どのように解決するのですか?
いつも
1
オブジェクトを使用します。
return one, two
は単にタプルを返します。
そうそう。
-> Tuple[bool, str]
は全くもって正しい。
のみです。
その
Tuple
タイプでは
定数
の要素で、それぞれが明確な型を持っています。を生成する場合は、常にタプルを返さなければなりません。
固定
特に、それらの値が特定の、異なる型である場合、戻り値の数。
その他のシーケンス型には
一つ
の型指定は、可変数の要素に対して行われるので
typing.Sequence
はここでは適さない。また
リストとタプルの違いは何ですか?
タプルは異種データ構造(項目が異なる意味を持つ)であるのに対し、リストは同種のシーケンスです。 タプルには構造があり、リストには順序がある。
Pythonの型ヒントシステムはその哲学に忠実で、固定長で特定の位置に特定の型を含む反復可能を指定する構文は今のところありません。
もし、あなたが が必要です。 は、どんなイテラブルでもよいという指定であれば、ベストなのは
-> Iterable[Union[bool, str]]
この時点で、呼び出し元はブーリアンや文字列を期待することができます。 任意の順序で また、長さは0から無限大の間です。
最後になりましたが、Python3.9では
-> tuple[bool, str]
の代わりに
-> Tuple[bool, str]
タイプヒンティング表記をサポート
は、ほとんどの標準ライブラリコンテナタイプに追加されました。
(参照
PEP 585
をご覧ください。) 実際、Python 3.7 の時点でも
from __future__ import annotations
コンパイラスイッチと、この構文をサポートするタイプチェッカを使用してください。
関連
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
Pythonショートビデオクローラーチュートリアル
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] 複数の例外を1行でキャッチする(ブロックを除く)
-
[解決済み] 列の値に基づいてDataFrameから行を選択するにはどうすればよいですか?
-
[解決済み] 環境変数の値にアクセスする方法
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】メソッドの型ヒントは、どのようにエンクロージャクラスの型を使用するのですか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python Decorator 練習問題
-
Python カメの描画コマンドとその例
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み】NameError: 名前 'self' が定義されていません。
-
[解決済み] リストとタプルの違いは何ですか?
-
[解決済み] Pythonの「名前付きタプル」とは何ですか?
-
[解決済み] タイプヒントを使用して複数の戻り値の型を指定する方法