Comportement inattendu de l'opérateur "is" avec des entiers
L'opérateur "is" de Python est utilisé pour comparer l'identité de deux objets. Dans le code donné, le comportement suivant semble inattendu :
>>> a = 256 >>> b = 256 >>> a is b True # Expected result >>> a = 257 >>> b = 257 >>> a is b False # This is surprising, despite both values being equal.
Pour comprendre ce comportement, nous devons considérer l'implémentation des entiers par Python. Pour les petits entiers (en particulier ceux compris entre -5 et 256), Python les stocke en tant qu'objets immuables. Lorsque plusieurs variables font référence à un si petit entier, elles pointent toutes vers le même objet sous-jacent.
Cela explique la première comparaison, où a et b sont des références au même objet, donc b renvoie True. Cependant, pour les entiers supérieurs à 256, Python les traite comme de nouveaux objets, donc a = 257 et b = 257 créent des objets séparés, et a is b renvoie correctement False.
Pour éviter de se fier à ce détail d'implémentation, il est mieux vaut comparer deux objets arbitraires en utilisant ==, l'opérateur d'égalité, qui vérifie l'égalité de la valeur de l'objet, quelle que soit son identité.
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!