Maison  >  Article  >  développement back-end  >  Explication détaillée des méthodes is et == pour comparer deux objets en Python

Explication détaillée des méthodes is et == pour comparer deux objets en Python

巴扎黑
巴扎黑original
2017-09-07 09:47:081303parcourir

Cet article présente principalement les informations pertinentes sur les deux méthodes de comparaison de deux objets, is et == en Python. J'espère que cet article pourra aider tout le monde. Les amis dans le besoin pourront s'y référer

. Is et == en Python sont deux façons de comparer deux objets

En Python, il existe deux façons de comparer si deux objets sont égaux, à savoir is et ==, entre les deux est différent

  • == compare les valeurs (comme la méthode égale en java)

  • est compare les références (peut être vu comme Comparer les adresses mémoire, similaire à = = en java)

pour :


>>> n = 1
>>> n is 1
True
>>> b = '1'
>>> b is 1
False
>>> n == b
False

en raison de 1 et '1' C'est différent s'il s'agit d'un valeur ou une référence, donc le résultat est faux

Pour :


>>> n = 1
>>> n is 1
True

Voici un point de connaissance, simplement On dit que pour les types primitifs Comme les entiers, la comparaison de références est une comparaison de valeurs.Cependant, Python adopte cette méthode pour implémenter les nombres entiers entre -5 et 256, un tableau est réservé en mémoire pour stocker ces nombres directement lors de la première utilisation. Pour les nombres en dehors de cette plage, un nouvel objet int sera créé

Prenons un exemple simple, comme indiqué dans le code suivant :


.
#a和b的值超出256
>>> a = 257
>>> b = 257
>>> a is b
False

#a和b的值在-5和256之间
>>> a = 256
>>> b = 256
>>> a is b
True

Comme le montre l'exemple ci-dessus, tant qu'il s'agit d'un entier compris entre -5 et 256, python n'initialisera pas de nouvel espace mémoire pour la variable, mais une fois qu'il dépasse 256, un nouvel espace sera alloué.

Vous pouvez également voir directement la différence dans les adresses mémoire des deux objets en imprimant les identifiants des deux objets, comme indiqué ci-dessous :


#a和b的值超出256
>>> a = 257
>>> b = 257
>>>
>>>
>>> id(a)
140638347685960
>>> id(b)
140638347686008

#a和b的值在-5和256之间
>>> a = 256
>>> b = 256
>>> id(a)
140638347656864
>>> id(b)
140638347656864

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!

Déclaration:
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