[解決済み] タイプヒントを使用して複数の戻り値の型を指定する方法
質問
Pythonの関数で
bool
または
list
. タイプヒントを使用して戻り値の型を指定する方法はありますか?
例えば、このような方法でよいのでしょうか?
def foo(id) -> list or bool:
...
解決方法は?
からの ドキュメント
クラス
typing.Union
ユニオンタイプです。 Union[X, Y]はXかYのどちらかを意味します。
したがって、複数の戻り値のデータ型を表現する適切な方法は、次のとおりです。
from typing import Union
def foo(client_id: str) -> Union[list,bool]
しかし、型付けは強制されていないことに注意してください。 Pythonは動的型付け言語であることに変わりはありません。 アノテーション構文は、実運用にリリースされる前のコードの開発中に役立つように開発されました。 PEP 484にあるように、"実行時に型チェックは行われません。
>>> def foo(a:str) -> list:
... return("Works")
...
>>> foo(1)
'Works'
見ての通り、私はint値を渡してstrを返しています。しかし
__annotations__
には、それぞれの値が設定されます。
>>> foo.__annotations__
{'return': <class 'list'>, 'a': <class 'str'>}
をご覧ください。 PEP 483 は、タイプヒントの詳細についてです。また Python 3.5の型ヒントは何ですか? ?
にのみ利用可能であることに注意してください。 Python 3.5 以上とします。に明確に記載されています。 PEP 484 .
Python 3.10 以降では、このユニオンを表現する新しい方法があります。以下を参照してください。 ユニオンタイプ :
ユニオンオブジェクトは、複数のタイプオブジェクトに対する|(ビット単位のor)演算の値を保持します。これらの型は、主に型注釈のために意図されています。ユニオン型表現は、typing.Unionと比較して、よりきれいな型ヒンティング構文を可能にします。
見ての通り、これはまさに
typing.Union
を以前のバージョンでは 先ほどの例も、この記法を使うように修正することができます。
def foo(client_id: str) -> list | bool:
関連
-
[解決済み] TypeError: '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コンテナのための組み込み汎用関数操作
-
python call matlab メソッドの詳細
-
Python百行で韓服サークルの画像クロールを実現する
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
Python LeNetネットワークの説明とpytorchでの実装
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件