mypy は本当に便利で、多くのバグをキャッチしますが、「科学的な」アプリケーションを作成するときは、多くの場合、次の操作を行うことになります。
def my_func(number: Union[float, int]):
# Do something
number
ユーザーの入力に応じて float または int になります。これを行う公式の方法はありますか?
ベストアンサー1
使用float
のみ、int
その型で暗示されているように:
def my_func(number: float):
ペップ484入力ヒント具体的には、次の通りです。
この PEP では、ユーザーにインポート番号を記述してから etc を使用するように要求するのではなく
numbers.Float
、ほぼ同じくらい効果的な簡単なショートカットを提案しています。引数が型を持つと注釈されている場合float
、型の引数int
は許容される。同様に、複素数型として注釈が付けられた引数の場合、float 型または int 型の引数が受け入れられます。
(太字は筆者による強調)。
理想的には、numbers.Real
:
from numbers import Real
def my_func(number: Real):
fractions.Fraction()
およびオブジェクトも受け入れられるためdecimal.Decimal()
、数値ピラミッドは整数と浮動小数点値だけよりも広範囲にわたります。
しかし、これらは現在、mypy
型チェックを行うために使用する際に機能しません。マイピー #3186。