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 n'est pas claire pour moi.
Tu expliques dans ta vidéo qu'au-delà de 256, a is b est False. C'est bien le cas dans l'interpréteur interactif mais pas dans un fichier exécuté dans le terminal. Pourquoi ? Comme tu nous as dit au début de ton cours qu'on travaille surtout dans des fichiers, est-ce que tester a is b a un intérêt ? (puisque la réponse est toujours True sauf dans l'interpréteur)
PS : J'utilise Git Bash dans Visual Studio Code

Salut Lili,
C'est une question qui revient souvent en effet. Il y a plein de processus qui sont effectués par Python selon les contextes, les interpréteurs (il faut savoir qu'il y a plusieurs implémentations de Python).
Dans ce cas-ci, quand tu lances le script au complet, Python peut scanner tout le script et se rendre compte que les objets ont la même valeur et qu'il peut donc économiser de la mémoire en en créant un seul dans la mémoire.
C'est valide parce que a et b sont des nombres entiers et sont immuables. Il ne prendrait pas cette décision pour des objets muables comme des listes, car modifier un objet modifierait l'autre (j'en parle plus loin dans les formations). Donc si tu modifies a, ça modifierait également b et là ce n'est pas ce qu'on veut.
Pour des nombres entiers, tu ne peux pas les modifier. Si tu changes la valeur, tu crées un nouvel objet en mémoire.
Concernant ta deuxième question sur l'intérêt d'utiliser is, il faut en fait bien comprendre la différence entre is et ==.
J'en parle dans cette vidéo. Le plus souvent effectivement on veut comparer les valeurs (donc utiliser le symbole d'égalité), mais il arrive qu'on ait besoin de vérifier l'adresse en mémoire, dans ce cas on utilisera is.
J'espère que c'est plus clair, n'hésite pas si tu as d'autres questions sur ce sujet :)
Merci. C'est très clair maintenant.
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte