HOWTO · Python
Comment vérifier si une variable vaut None en Python
Découvrez comment vérifier si une variable Python contient None et quand choisir une autre approche.
Sur cette page
En Python, la valeur None représente l’absence de valeur. Elle est distincte de 0, de False et d’une chaîne vide. Pour vérifier si une variable contient None, utilisez value is None ; pour tester le cas contraire, utilisez value is not None.
Utilisez l’opérateur is pour vérifier si une variable vaut None en Python
None est un singleton : il n’existe qu’un seul objet None. L’opérateur is vérifie si deux références désignent le même objet ; c’est donc la méthode recommandée pour effectuer directement ce test. Voici les deux conditions :
value = None
if value is None:
print("The value is None")
else:
print("The value is not None")
if value is not None:
print("A value is present")
else:
print("No value is present")
The value is None
No value is present
Utilisez la seconde forme lorsque vous souhaitez poursuivre uniquement si une valeur est présente, par exemple avant d’appeler une méthode sur celle-ci. Le test d’identité évite aussi de confondre un autre objet avec None simplement parce que sa valeur booléenne est fausse.
Utilisez la fonction isinstance() pour vérifier si une variable vaut None en Python
isinstance() vérifie si un objet appartient à un type donné et renvoie un booléen. Comme type(None) est NoneType, cette expression vérifie si l’objet est de ce type :
value = None
print(isinstance(value, type(None)))
True
Cette approche convient lorsqu’une vérification de type est précisément utile. Pour vérifier directement si une valeur est None, value is None est plus simple et exprime clairement le test d’identité recherché.
Utilisez un dictionnaire pour vérifier si une variable vaut None en Python
Un dictionnaire peut avoir None comme clé ; on peut donc rechercher cette clé dans un dictionnaire donné. Il s’agit d’un exemple limité de recherche, et non d’une méthode générale pour examiner n’importe quelle variable :
value = None
messages = {None: "The value is None"}
if value in messages:
print(messages[value])
else:
print("No matching key")
The value is None
La condition vérifie si value correspond à une clé de messages. Elle indique que la valeur est None uniquement parce que ce dictionnaire contient cette clé et que l’exemple l’utilise à cette fin. Pour tester une variable de façon ordinaire, préférez is None.
Utilisez les blocs try et except pour vérifier si une variable vaut None en Python
La gestion des exceptions est utile lorsqu’une opération peut échouer avec une valeur telle que None ; elle ne teste pas directement la variable. Par exemple, additionner None à un entier déclenche une TypeError. Interceptez l’erreur précise que vous prévoyez plutôt que d’utiliser un except sans type, qui pourrait masquer un problème sans rapport.
value = None
try:
result = value + 5
except TypeError:
print("This operation needs a numeric value")
This operation needs a numeric value
Ce modèle réagit à l’échec de l’addition. Si votre logique doit déterminer si la variable vaut None, vérifiez-le explicitement avant d’effectuer l’opération.
Utilisez l’opérateur d’égalité (==) pour vérifier si une variable vaut None en Python
value == None compare les valeurs et renvoie True lorsque value vaut None. Toutefois, la méthode d’égalité d’un objet peut définir un comportement de comparaison personnalisé ; l’égalité n’est donc pas le moyen le plus clair d’identifier le singleton None. Les valeurs ordinaires telles que 0, False, "" et [] ne sont pas égales à None : leur valeur de vérité ne les transforme pas en None. Pour ce test, préférez value is None.
Conclusion
Utilisez value is None pour vérifier directement si une variable Python contient None, et value is not None pour tester le cas contraire. isinstance(value, type(None)) est une option lorsque la vérification du type est utile ; l’appartenance à un dictionnaire ne concerne qu’une table de correspondance précise ; et try/except sert à gérer l’échec attendu d’une opération. Ces distinctions vous aideront à choisir la méthode adaptée au code que vous écrivez.