mypyは非常に便利で、多くのバグをキャッチしますが、「科学的な」アプリケーションを作成するとき、しばしば次のようになります。
def my_func(number: Union[float, int]):
# Do something
number
は、ユーザーの入力に応じて、floatまたはintです。それを行う公式の方法はありますか?
float
onlyを使用します。そのタイプにはint
が含まれているためです。
_def my_func(number: float):
_
PEP 484 Type Hints は具体的に次のように述べています:
ユーザーがインポート番号を書き込んでから_
numbers.Float
_などを使用することを要求するのではなく、このPEPはほぼ同じくらい効果的な簡単なショートカットを提案します:引数がfloat
型、タイプint
が受け入れ可能です;同様に、complex型を持つと注釈された引数については、float型またはint型の引数を使用できます。
(太字強調鉱山)。
理想的には、まだ _numbers.Real
_ を使用します:
_from numbers import Real
def my_func(number: Real):
_
fractions.Fraction()
およびdecimal.Decimal()
オブジェクトも同様に受け入れます。数値ピラミッドは、整数や浮動小数点値よりも広いです。
ただし、mypy
を使用して型チェックを行う場合、現在これらは機能していません。 Mypy#3186 を参照してください。