Ah il fallait que l’on arrive vers ce genre d’article. Il s’agit d’attirer notre attention sur de petites subtilités. Dans le cas présent je considère cela comme un faux ami.
Parfois on a tendance à faire des raccourcis ou des abus de langage en perdant de vue l’origine des choses. Et pourtant jamais, un code propose 2 fonctions qui font la même chose. On ne clone pas le fonction par plaisir.C’est le cas avec “==” et “is”. Je l’avoue “is” est heureusement pas si souvent que cela détourné de sa vocation première.
Quelques lignes de code pour comprendre :
>>> list1 = [1, 2, 3] >>> list2 = list1 >>> list1 is list2 True >>> list1 == list2 True
Jusque là tout va bien.
Mais :
>>> list3 = list(list1) >>> list1 == list3 True >>> list1 is list3 False
Ahah que se passe-t-il ?
Forcément ils ne font pas la même chose.
“is” vérifie les objets. Si on pointe vers le même il retourne True.
“==” vérifie que le contenu des objets sont bien identiques.
Et voilà !