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