Tester si une variable est None en Python

None est une valeur un peu spéciale en Python et son utilisation, à la manière des NaN est particulière.

Ainsi, même s’il est possible de faire x == None pour tester si une variable x vaut None, il existe une façon plus optimale et plus idiomatique de réaliser ce test.

Problème :

Comment tester si une variable est du type None en Python ?

Solution :

Utiliser l’opérateur is pour tester si une variable est de type None.

Ainsi, on fera tout simplement

x is None

pour récupérer un booléen indiquant si x est de type None.

Exemple :

x = None

if x is None:
    print("x est de type None")
else:
    print("x n'est pas de type None")

Dans cet exemple auto-explicatif, on affiche "x est de type None" si x est de type None.

Sinon, on affiche "x n'est pas de type None" si x n’est pas de type None.

Plutôt cohérent, non ?

💡Et alors quel est l’intérêt de faire is None à la place de == None ?

En Python, l’opérateur is vérifie si deux variables réfèrent au même objet en mémoire. L’opérateur ==, quant à lui, vérifie si deux variables ont la même valeur.

Or, en Python, il n’y a qu’une seule et unique instance de None en mémoire.

Ainsi, il n’y a aucune ambiguité lorsque l’on teste is None.

De plus, certaines classes d’objet Python peuvent modifier l’opérateur == et altérer son fonctionnement, alors que is est plus rarement alterné.

Enfin, un avantage en termes de performance est que is None met en moyenne 50% de temps en moins à s’exécuter, contre == None, ce qui le rend plus attractif.


Laisser un commentaire