- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte personlive_helpToutes les questions
Lili
29 octobre 2023 - 29 octobre 2023 à 14:54
checkConversation résolue
2 réponses
Video : Les bases de Python > Les opérateurs > La différence entre is et ==
=> a is b retourne True au-delà de 256 Bonjour Thibault, La question a déjà été abordée (par Zepheriel le 21 septembre 2022 à 11:39)... mais pour autant, la réponse …
00:00:00 :Dans cette partie, je vais vous présenter la différence entre le mot is et l'opérateur d'égalité.Il y a vraiment une grosse différence entre les deux qui n'est pas forcément très bien comprise des débutants,et pourtant elle a toute son importance.
00:00:12 :Le symbole d'égalité, donc l'opérateur égal-égal,ça nous permet de vérifier l'égalité des valeurs qui sont contenues dans nos variables.Le mot-clé is, par contre, il permet de vérifier si deux objets sont les mêmes en mémoire,donc si on a les mêmes objets d'un côté et de l'autre.
00:00:27 :Je vais vous montrer quelques petits exemples ici pour que vous compreniez bien la différence entre ces deux façons de faire.Par exemple, imaginez que vous ayez une liste A qui contient des nombres,donc on va mettre 1, 2 et 3 dans cette liste,et on a une autre liste B qui va elle aussi contenir des nombres,
00:00:44 :donc les mêmes nombres 1, 2 et 3.Si je veux vérifier que les listes contiennent les mêmes informations,je vais utiliser le symbole d'égalité, donc égal-égal,j'appuie sur entrée et là on a bien true, puisque les deux listes contiennent les mêmes valeurs.
00:00:56 :Donc on a 1, 2, 3 dans chaque liste.Par contre, si j'utilise is, donc A is B, et que j'appuie sur entrée,là on a false, puisque l'objet A n'est pas égal à l'objet B en mémoire.
00:01:08 :Pour vérifier ça, on peut utiliser la fonction id, donc id comme ceci,et lui passer chacun des objets, donc on va lui passer l'objet A et l'objet B,et vous voyez que l'adresse en mémoire que nous retourne la fonction id n'est pas la même.
00:01:20 :On a ici un nombre qui finit par 48 et ici un nombre qui finit par 32,donc ça c'est l'adresse en mémoire de chaque objet et elle n'est pas pareille.
00:01:27 :Donc is, ici, ça va nous retourner true uniquement si cette adresse en mémoire est la même.Donc là, une liste en fait, quand on crée une liste, ça met cette variable dans une case en mémoire,et la liste ne va pas avoir la même case à chaque fois qu'on crée une liste différente.
00:01:42 :Donc A va avoir une adresse en mémoire différente de B.Ça va être pareil pour à peu près toutes les variables qu'on va créer,si je crée une variable qui contient le nombre 1000 et une variable qui contient le nombre 2000,et que je fais A is B, là aussi on a false.
00:01:55 :Et si je fais A égal égal B, là aussi on va avoir false puisque 1000 n'est pas égal à 2000.Si par contre je fais B égal 1000, là on aura bien la même valeur,donc B aura la même valeur que la variable A,donc si je fais A égal égal B, on va avoir true,
00:02:09 :mais si je fais A is B, là on aura toujours false puisque, là encore,l'adresse en mémoire n'est pas la même pour A et pour B.
00:02:15 :Donc c'est vraiment bien important de comprendre cette différenceet de ne pas utiliser is quand vous voulez vérifier l'égalitéet de ne pas utiliser le symbole d'égalité, donc égal égal,quand vous voulez vérifier si les deux objets sont les mêmes.
00:02:27 :Bien faire attention à ça.Il y a une petite particularité avec les nombres,notamment quand vous avez des nombres entiers qui vont de "-5 à 256".
00:02:35 :En fait, entre "-5 et 256", pour optimiser les choses,les gens qui ont codé Python, ils ont déjà défini des adresses en mémoire pour ces nombres,et donc quand vous créez des variables qui ont une valeur comprise entre "-5 et 256",et bien en fait, même si les deux variables sont différentes,
00:02:52 :si on a par exemple A qui est égale à 10 et B qui est égale à 10,donc on a deux variables ici différentes, A et B,et bien en fait, quand on va faire A is B avec des nombres entre "-5 et 256",vous voyez que dans ce cas-ci, ça retourne true,
00:03:04 :puisque si on fait id de A et id de B,vous voyez que Python les a placés dans la même case mémoire.Donc ça, c'est vraiment pour des raisons d'optimisationet c'est uniquement pour les nombres de "-5 à 256".
00:03:16 :Donc si je fais A égale 256, B égale 256,là encore, on va avoir A is B qui va être égale à true.Si je fais par contre A égale 257 et B égale 257 également,là A is B sera false, puisque c'est vraiment, comme je vous disais, entre "-5 et 256".
00:03:31 :Donc ne vous inquiétez pas si vous faites des tests de votre côtéavec des nombres entiers qui vont de "-5 à 256",c'est normal si A is B vous retourne true dans ce cas-ci.
00:03:41 :Mais dès qu'on dépasse cette plage, si je vais aussi dans "-6",donc en dessous de "-5", là on va encore avoir un ID différent.Donc A is B va nous retourner false.
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.