Explorer l'écart entre la comparaison de chaînes : '==' vs 'is'
L'acte de comparer des chaînes en utilisant soit '== » ou « est » peuvent parfois donner des résultats contrastés. Cela soulève la question de savoir pourquoi cette disparité existe.
Deux variables de chaîne peuvent avoir la même valeur, mais « s1 == s2 » renvoie systématiquement True, alors que « s1 is s2 » renvoie parfois False.
Lorsqu'elles sont interprétées en Python, des comparaisons similaires réussissent :
>>> s1 = 'text' >>> s2 = 'text' >>> s1 is s2 True
Pour comprendre ce phénomène, il est crucial de distinguer les tests d'identité ("est") et test d'égalité ('==').
Dans l'exemple fourni, ce qui se produit est répliqué dans l'interpréteur comme suit :
>>> a = 'pub' >>> b = ''.join(['p', 'u', 'b']) >>> a == b True >>> a is b False
La disparité survient parce que ' is' compare les identités des objets (c'est-à-dire les adresses mémoire), tandis que '==' compare leurs valeurs. Dans le scénario ci-dessus, « a » et « b » ont la même valeur mais existent séparément en mémoire.
Par conséquent, il est logique que « a is b » soit évalué à False puisqu'il s'agit d'objets distincts, même si leur contenu s'aligne. Essentiellement, « a is b » s’apparente à « id(a) == id(b) ».
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!