Lær Python Identity Operator og forskjellen mellom == og IS Operator


Denne artikkelen er hovedsakelig kurert for å forklare en viktig operatør i python (\IDENTITY OPERATOR) og hvordan en identitetsoperatør skiller seg (er, er ikke) fra sammenligningsoperatøren (==).

IDENTITETSOPERATOR

Identitetsoperatør (\er og \is not) brukes til å sammenligne objektets minneplassering. Når et objekt opprettes i minnet, tildeles en unik minneadresse til det objektet.

  • ‘==’ sammenligner om begge objektverdiene er identiske eller ikke.
  • ‘is’ sammenligner om begge objektene tilhører samme minneplassering.

Lag tre strengobjekter Navn, Navn1 og Navn2. Stringobjekt Navn og Navn2 vil ha samme verdi og Navn1 vil ha forskjellige verdier.

Når vi lager disse objektene, er det som skjer bak scenen at objektet blir opprettet i minnet og vil være tilgjengelig i løpet av programmets levetid.

Nå kan du bruke en sammenligningsoperator ==” for å sjekke om begge objektverdiene er like. Utdataene fra sammenligningsoperatoren vil være en boolsk (sann eller usann) verdi.

Nå som du har sammenlignet to verdier for å bestemme for likhet, la oss ta en titt på hvordan identitetsoperatøren fungerer.

Den innebygde funksjonen Id() brukes for å få «identiteten» til et objekt. Et heltall som vil være unikt og konstant for objektet i løpet av dets levetid.

For å gjøre det enkelt, tenk at dette er en unik statlig ID eller Emp ID som er tildelt deg, på samme måte tildeles en unik heltallsverdi for hvert objekt.

Nå kan du sammenligne 2 objektreferanser ved å bruke \is-operatoren.

Når jeg sammenligner Navn og Navn1 eller Navn2 ved hjelp av identitetsoperatoren, er det det den gjør i backend, kjører \id(Name) == id(Name2). Siden id(Name) og id (Navn2) begge deler samme minneplassering, returnerer det True.

Nå kommer den interessante delen. Se på vårt forrige eksempel der både Navn og Navn1 har identiske verdier og returnerer samme heltallsverdi når vi kjører funksjonen id(). Hvorfor tror du objektet «Navn_ny» og «Navn_le» ikke er identiske selv om de deler de samme verdiene fra skjermbildet nedenfor?

Dette er på grunn av implementeringen av pythondesign. Når du oppretter et heltallsobjekt i området (-5 256) og strengobjekter som er større enn eller lik 20 tegn, fungerer disse objektene som en peker til allerede opprettede objekter i stedet for å lage forskjellige objekter i minnet for samme verdi.

Bildefremstillingen nedenfor vil gi deg en klar ide om hva vi har sett så langt i denne artikkelen.

I denne artikkelen har vi sett hva som er en identitetsoperatør. Hvordan sammenligningsoperatør og identitetsoperatør brukes, designimplementering på hvordan et objekt lages i minnet.