Recherche de site Web

Apprenez l'opérateur d'identité Python et la différence entre les opérateurs "==" et "IS"


Cet article est principalement destiné à expliquer un opérateur important en python (« IDENTITY OPERATOR ») et en quoi un opérateur d'identité diffère (est, n'est pas ) à partir de l'opérateur de comparaison (==).

OPÉRATEUR D'IDENTITÉ

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

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

Créez trois objets chaîne Name, Name1 et Name2. Les objets chaîne Name et Name2 contiendront la même valeur et Name1 contiendront des valeurs différentes.

Lorsque nous créons ces objets, ce qui se passe en coulisses est que cet objet sera créé en mémoire et sera disponible pendant toute 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 identiques. Le résultat de l'opérateur de comparaison sera une valeur booléenne (Vrai ou Faux).

Maintenant que vous avez comparé deux valeurs pour déterminer l’égalité, examinons le fonctionnement de l’opérateur d’identité.

La fonction intégrée Id() a est utilisée pour obtenir « l'identité » d'un objet. Un entier qui sera unique et constant pour l'objet tout au long de sa vie.

Pour faire simple, pensez qu'il s'agit d'un ID gouvernemental unique ou d'un ID d'Emp qui vous est attribué, de même, une valeur entière unique est attribuée à chaque objet.

Vous pouvez maintenant comparer 2 références d'objet en utilisant l'opérateur « est ».

Lorsque je compare Name et Name1 ou Name2 en utilisant l'opérateur d'identité, ce qu'il fait au niveau du backend, c'est qu'il exécute simplement "id(Name ) == id(Nom2) ”. Puisque id(Name) et id(Name2) partagent tous deux le même emplacement mémoire, il renvoie True.

Voici maintenant la partie intéressante. Regardez notre exemple précédent où Name et Name1 ont des valeurs identiques et renvoient la même valeur entière lorsque nous exécutons la fonction id(). Pourquoi pensez-vous que les objets « Name_new » et « Name_le » ne sont pas identiques même s'ils partagent les mêmes valeurs que dans la capture d'écran ci-dessous ?

Cela est dû à l'implémentation de la conception Python. Lorsque vous créez un objet entier dans une plage (-5 256) et des objets chaîne supérieurs ou égaux à 20 caractères, au lieu de créer différents objets en mémoire pour la même valeur, ces objets agir 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.

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, implémentation de conception sur la façon dont un objet est créé en mémoire.