Zoeken op website

Leer de Python-identiteitsoperator en het verschil tussen de operator "==" en "IS".


Dit artikel is voornamelijk samengesteld om een belangrijke operator in Python (“IDENTITY OPERATOR”) uit te leggen en hoe een identiteitsoperator verschilt (is, is niet ) van vergelijkingsoperator (==).

IDENTITEIT OPERATOR

Identiteitsoperator (“is ” en “is niet ”) wordt gebruikt om de geheugenlocatie van het object te vergelijken. Wanneer een object in het geheugen wordt aangemaakt, wordt aan dat object een uniek geheugenadres toegewezen.

  • ‘==’ vergelijkt of beide objectwaarden identiek zijn of niet.
  • ‘is’ vergelijkt of beide objecten tot dezelfde geheugenlocatie behoren.

Maak drie tekenreeksobjecten Naam, Naam1 en Naam2. Tekenreeksobjecten Naam en Naam2 hebben dezelfde waarde en Naam1 hebben verschillende waarden.

Wanneer we deze objecten maken, gebeurt er achter de schermen dat dat object in het geheugen wordt gemaakt en beschikbaar zal zijn gedurende de levensduur van het programma.

Nu kunt u een vergelijkingsoperator “== ” gebruiken om te controleren of beide objectwaarden hetzelfde zijn. De uitvoer van de vergelijkingsoperator is een Booleaanse waarde (True of False).

Nu u twee waarden hebt vergeleken om de gelijkheid te bepalen, gaan we eens kijken hoe de identiteitsoperator werkt.

De ingebouwde Id() functie wordt gebruikt om de “identiteit ” van een object te verkrijgen. Een geheel getal dat tijdens zijn levensduur uniek en constant zal zijn voor het object.

Om het eenvoudig te maken, kunt u dit beschouwen als een unieke ID of Emp ID van de overheid die aan u is toegewezen, op dezelfde manier wordt aan elk object een unieke gehele waarde toegewezen.

Nu kunt u 2 objectreferenties vergelijken met de operator “is ”.

Wanneer ik Naam en Naam1 of Naam2 vergelijk met behulp van de identiteitsoperator, wat het aan de backend doet, is dat het simpelweg “id(Naam) uitvoert ) == id(Naam2) ”. Omdat id(Name) en id(Name2) beide dezelfde geheugenlocatie delen, retourneert het True.

Nu komt hier het interessante deel. Kijk naar ons vorige voorbeeld waarin zowel Naam als Naam1 identieke waarden hebben en dezelfde gehele waarde retourneren wanneer we de functie id() uitvoeren. Waarom denk je dat de objecten “Name_new” en “Name_le” niet identiek zijn, ook al delen ze dezelfde waarden uit de onderstaande schermafbeelding?

Dit komt door de implementatie van het Python-ontwerp. Wanneer u een geheel getalobject binnen het bereik (-5.256) maakt en objecten groter dan of gelijk aan 20 tekens aan elkaar koppelt, in plaats van verschillende objecten in het geheugen te maken voor dezelfde waarde van deze objecten fungeren als een verwijzing naar reeds gemaakte objecten.

De onderstaande afbeelding geeft u een duidelijk beeld van wat we tot nu toe in dit artikel hebben gezien.

Samenvatting

In dit artikel hebben we gezien wat een identiteitsoperator is. Hoe vergelijkingsoperator en identiteitsoperator worden gebruikt, ontwerpimplementatie van hoe een object in het geheugen wordt gemaakt.