En Python, il s'écrit parfois «si x est y» ou «si x == y».
À ce moment-là, vous risquez de vous perdre avec ʻiset
==. Par conséquent, les différences entre ʻis
et` == ʻ sont résumées ci-dessous.
--ʻIs compare les objets (s'ils sont le même objet) --
== `compare les valeurs (qu'elles soient de la même valeur)
x = <object A>
Est défini,
if x is <object A>:
C'est le cas lorsque vous souhaitez écrire une expression conditionnelle.
Bien sûr, pour les comparaisons Vrai / Faux
x = True
Définir,
if x is True:
Ce n'est pas une erreur, mais dans ce cas pythonique
if x:
C'est bon d'écrire.
→ La raison pour laquelle x vaut True est correct est que la classe booléenne True / False est conçue de telle sorte qu'il n'y en ait qu'une à un moment donné.
The values False and True will be singletons, like None.
Source du devis PEP285
x = 1234
Est défini,
if x == 1234:
C'est le cas lorsque vous souhaitez écrire une expression conditionnelle.
Ne confondez pas avec == et utilisez-les correctement.
Note de bas de page 1 Contenu présenté dans la section commentaire par @ 7of9
https://docs.python.org/3.6/library/functions.html#id
id(object) ... CPython implementation detail: This is the address of the object in memory.
Est la base du document.
Note de bas de page 2 Contenu présenté dans la section commentaire par @shiracamus
J'ai vérifié la source de CPython. "is" a été remplacé par Is, Is a été remplacé par PyCmp_IS et PyCmp_IS a comparé les adresses comme suit:
Python/ceval.c
static PyObject *
cmp_outcome(int op, register PyObject *v, register PyObject *w)
{
int res = 0;
switch (op) {
case PyCmp_IS:
res = (v == w);
break;
case PyCmp_IS_NOT:
res = (v != w);
break;
En fin de compte, nous faisons une comparaison d'adresses.
Recommended Posts