Détails
Vérifier si une variable est un nombre entier ou non
Comment vérifier si une variable est un nombre entier ?
826
3
Comment vérifier si une variable est un nombre entier ?
Si vous devez le faire, faites
à moins que vous ne soyez en Python 2.x, auquel cas vous voulez
N'utilisez pas
type
. Ce n'est presque jamais la bonne réponse en Python, car cela bloque toute la flexibilité du polymorphisme. Par exemple, si vous sous-classezint
, votre nouvelle classe doit s'enregistrer comme unint
, ce quetype
ne fera pas :Ceci est conforme au polymorphisme fort de Python : vous devriez autoriser tout objet qui se comporte comme un
int
, au lieu d'exiger qu'il en soit un.BUT
La mentalité classique de Python, cependant, est qu'il est plus facile de demander pardon que la permission. En d'autres termes, ne vérifiez pas si
x
est un entier ; supposez que c'est le cas et attrapez l'exception qui en résulte si ce n'est pas le cas :Cette mentalité est lentement dépassée par l'utilisation de [classes de base abstraites][1], qui vous permettent d'enregistrer exactement les propriétés que votre objet doit avoir (additionner ? multiplier ? doubler ?) en le faisant hériter d'une classe spécialement construite. Ce serait la meilleure solution, puisqu'elle permet d'obtenir exactement ces objets avec les attributs nécessaires et suffisants, mais vous devrez lire la documentation sur la façon de l'utiliser.
[1] : http://docs.python.org/library/abc.html
Voir [ici][1] pour en savoir plus.
Notez que cela n’est pas utile si vous recherchez des attributs de type
int
. Dans ce cas, vous voudrez peut-être aussi vérifier la présence delong
:J'ai vu des vérifications de ce type par rapport à un type de tableau/index dans les sources Python, mais je ne pense pas que cela soit visible en dehors du C.
Réponse de Token SO: Êtes-vous sûr que vous devez vérifier son type ? Soit vous ne passez pas un type que vous ne pouvez pas gérer, soit vous n'essayez pas d'être plus malin que vos éventuels réutilisateurs de code, ils peuvent avoir une bonne raison de ne pas passer un int à votre fonction.
[1] : http://docs.python.org/library/functions.html#isinstance
J'ai trouvé une [question connexe] (https://stackoverflow.com/questions/402504/how-to-determine-the-variable-type-in-python) ici, sur le site SO lui-même.
Les développeurs Python préfèrent ne pas vérifier les types mais effectuer une opération spécifique au type et attraper une exception
TypeError
. Mais si vous ne connaissez pas le type, vous avez le problème suivant.