Apprenez l'opérateur d'identité Python et la différence entre l'opérateur «==» et «IS»

Apprenez l'opérateur d'identité Python et la différence entre l'opérateur «==» et «IS»

Cet article est principalement organisé pour expliquer un opérateur important dans Python (««Opérateur d'identité») Et comment un opérateur d'identité diffère (est, n'est pas) de l'opérateur de comparaison (==).

Opérateur d'identité

Opérateur d'identité ("est" et "n'est pas") est utilisé pour comparer l'emplacement de la mémoire de l'objet. Lorsqu'un objet est créé en mémoire, une adresse de mémoire unique est allouée à cet objet.

  • '==' Compare si les deux valeurs d'objet sont identiques ou non.
  • 'est' Compare si les deux objets appartiennent au même emplacement de mémoire.

Créer trois objets de chaîne Nom, Nom1, et Nom2. Objet String Nom et Nom2 détiendra la même valeur et Nom1 détiendra différentes valeurs.

Lorsque nous créons ces objets, ce qui se passe derrière la scène est que cet objet sera créé en mémoire et sera disponible pendant la durée de vie du programme.

Vous pouvez maintenant utiliser un opérateur de comparaison "==" Pour vérifier si les deux valeurs d'objet sont les mêmes. La sortie de l'opérateur de comparaison sera un booléen (Vrai ou FAUX) valeur.

Créer et comparer les objets

Maintenant que vous avez comparé deux valeurs pour déterminer l'égalité, jetons un coup d'œil sur le fonctionnement de l'opérateur d'identité.

Le intégré Identifiant() Une fonction est utilisée pour obtenir le «identité«D'un objet. Un entier qui sera unique et constant pour l'objet au cours de sa vie.

Pour le faire, pensez à cela comme un gouvernement unique IDENTIFIANT ou Empiler vous attribué, de même qu'une valeur entière unique est attribuée pour chaque objet.

Valeur entière unique

Vous pouvez maintenant comparer 2 références d'objets en utilisant "est" opérateur.

Opérateur d'identité

Quand je me compare Nom et Nom1 ou Nom2 Utiliser l'opérateur d'identité ce qu'il fait au backend est qu'il fonctionne simplement "Id (name) == id (name2)". Depuis id (nom) et id (name2) Les deux partagent le même emplacement de mémoire, il revient Vrai.

Maintenant, voici la partie intéressante. Regardez notre exemple précédent où les deux Nom et Nom1 ont des valeurs identiques et renvoie la même valeur entière lorsque nous exécutons identifiant() fonction. Pourquoi pensez-vous "Name_new" et "Name_le"L'objet n'est pas identique même s'ils partagent les mêmes valeurs de la capture d'écran ci-dessous?

Valeurs entières

C'est à cause de la mise en œuvre de la conception Python. Lorsque vous créez un objet entier dans la plage (-5 256) et des objets de chaîne supérieurs ou égaux à 20 Chars, au lieu de créer des objets différents à la mémoire pour la même valeur, ces objets agissent comme un pointeur vers des objets déjà créés.

La représentation picturale ci-dessous vous donnera une idée claire de ce que nous avons vu jusqu'à présent dans cet article.

Représentation diagrammatique
Résumé

Dans cet article, nous avons vu ce qu'est un opérateur d'identité. Comment l'opérateur de comparaison et l'opérateur d'identité sont utilisés, concevez l'implémentation de la façon dont un objet est créé en mémoire.