Utilisez float
uniquement comme int
est implicite dans ce type :
def my_func(number: float):
PEP 484 Conseils sur les types stipule spécifiquement que :
Plutôt que d'exiger que les utilisateurs écrivent des numéros d'importation et utilisent ensuite numbers.Float
etc., ce PEP propose un raccourci simple et presque aussi efficace : lorsqu'un argument est annoté comme ayant le type float
un argument de type int
est acceptable ; de même, pour un argument annoté comme ayant le type complexe, les arguments de type float ou int sont acceptables.
(C'est moi qui souligne en gras).
Idéalement, vous devriez toujours utiliser numbers.Real
:
from numbers import Real
def my_func(number: Real):
car cela permettrait d'accepter fractions.Fraction()
y decimal.Decimal()
La pyramide des nombres ne se limite pas aux nombres entiers et aux valeurs à virgule flottante.
Cependant, ces derniers ne fonctionnent pas actuellement lorsque l'on utilise mypy
pour effectuer votre vérification de type, voir Mypy #3186 .