HOWTO · Python
Vérifier le type de variable en Python
Apprenez à vérifier le type d’une valeur en Python avec les fonctions `type()` et `isinstance()`.
Sur cette page
Utilisez type(value) pour connaître le type d’une valeur, ou isinstance(value, SomeType) pour vérifier si elle appartient à un type donné, y compris à une sous-classe. En Python, les variables sont des noms liés à des objets : on inspecte donc la valeur, et non un type de variable déclaré à l’avance.
Les variables et leurs types en Python
En Python, un nom fait référence à un objet, et cet objet possède un type. Affecter une valeur lie un nom à cet objet ; il n’est pas nécessaire de déclarer son type au préalable. Par exemple, 42, 3.5, "hello", True et [1, 2] sont respectivement des valeurs de type int, float, str, bool et list. Le même nom peut ensuite désigner un objet d’un autre type.
Vérifier le type d’une variable en Python
Pour une inspection rapide, transmettez la valeur à type() ; utilisez isinstance() lorsque votre code a besoin d’un test de type qui renvoie un booléen. L’exemple ci-dessous montre les deux approches avec un entier et une chaîne de caractères. Il est autonome ; exécutez-le avec Python pour voir les résultats affichés.
count = 50
label = "Ada"
print(type(count))
print(type(label))
print(isinstance(count, int))
print(isinstance(label, int))
<class 'int'>
<class 'str'>
True
False
Utiliser la fonction type() pour vérifier le type d’une variable en Python
La fonction intégrée type() renvoie l’objet type de la valeur que vous lui transmettez. Lorsqu’on les affiche, les types intégrés courants apparaissent sous des formes telles que <class 'int'>, <class 'float'> et <class 'str'>. C’est utile pour examiner une valeur pendant le débogage ou pour choisir un comportement en fonction de son type exact.
Par exemple, type(50) correspond à int, type(10.5) à float et type("Ada") à str. Appeler type() indique ce qu’est un objet ; cela ne le convertit pas en un autre type.
Utiliser la fonction isinstance() pour vérifier le type d’une variable en Python
Utilisez isinstance(value, classinfo) pour obtenir True ou False selon que value est une instance de la classe ou des classes spécifiées. Contrairement à la comparaison directe du résultat de type(value) avec une classe, isinstance() reconnaît aussi les sous-classes. C’est donc un bon choix lorsque le contrôle doit accepter une classe et ses descendantes.
class Animal:
pass
class Dog(Animal):
pass
pet = Dog()
print(isinstance(pet, Dog))
print(isinstance(pet, Animal))
print(type(pet) is Dog)
True
True
True
Dans cet exemple, les deux contrôles isinstance() renvoient vrai parce que Dog dérive de Animal ; la comparaison de type exact est vraie parce que pet a été créé comme un Dog. Utilisez type(value) is SomeType uniquement lorsqu’une correspondance exacte du type est nécessaire. L’inspection du type et la vérification d’une instance ne changent pas le type d’une valeur.
Cette distinction compte lorsqu’une fonction est conçue pour fonctionner avec une classe de base et les objets spécialisés qui en dérivent. Par exemple, du code qui accepte un Animal peut souvent traiter un Dog par la même interface ; isinstance(pet, Animal) exprime donc ce contrat. Un contrôle exact comme type(pet) is Animal rejetterait un Dog, même s’il hérite de Animal. Réservez les contrôles de type exact aux cas où les sous-classes doivent être traitées différemment ou ne sont explicitement pas prises en charge ; dans du code polymorphe courant, le contrôle qui tient compte des sous-classes est généralement plus souple.