Maison > développement back-end > Tutoriel Python > Pourquoi l'opérateur 'is' de Python se comporte-t-il de manière inattendue avec les entiers ?

Pourquoi l'opérateur 'is' de Python se comporte-t-il de manière inattendue avec les entiers ?

DDD
Libérer: 2024-12-28 04:13:11
original
927 Les gens l'ont consulté

Why Does Python's

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.
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal