mypy、型のヒント: Union[float, int] -> Number型はありますか? 質問する

mypy、型のヒント: Union[float, int] -> Number型はありますか? 質問する

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

おすすめ記事