新しいPython 3.5モジュールtypingを使用していて楽しいです。タイピングモジュール - 文字列リテラルタイプ
正確な文字列リテラルに基づいてタイプを指定する方法が不思議でした。例えば、関数は "North"、 "West"、 "East"、 "South"の4つの文字列のいずれかを返すことが保証されています。
私はUnion
タイプとTypeVar
機能を見つけ、文書を通じて見えたが、答えを見つけることができませんでした
この問題表す例機能:。
def compute_quadrant(x: int, y: int) -> str:
if x > 0 and y > 0:
return 'I'
elif x < 0 and y > 0:
return 'II'
elif x < 0 and y < 0:
return 'III'
elif x > 0 and y < 0:
return 'IV'
を代わりにちょうどstr
を返すので、私は思います4つの値のうちの1つであるより具体的な型を返すのが好きです - "I"
,"II"
,"III"
または"IV"
である。 type Quadrant = "I" | "II" | "III" | "IV"
- このユースケースではtyping
モジュールでPythonの砂糖がありますか?
入力に関係はありませんが、 'enum'とは考えていますか? –
私は尋ねることができます、なぜあなたはそのようなものが必要ですか?タイプ注釈は、コードを表示するテキストエディタおよびプログラマのために作成されるためです。関数が返す可能性のある要素の範囲を制限することができれば、コードを見ることで間違いなくそのことを言うことができます。 –
おそらく、この特定の関数はユースケースを簡単に説明しているわけではありませんが、コードを書くときにはできるだけ多くのコンテキストを提供したいと考えています。データを操作したりオブジェクトに対して複雑な操作を行う場合、非常に厳密で正確な型を提供できるようにしたいと考えています。さらに、分析ツールは、タイプに基づいて最適化のポイントを見つけることができます。たとえば、決してヒットしないコードパスや重要な間違いなどです。 – fructosewizard