Lær Python Identity Operator og forskellen mellem "==" og "IS" Operator


Denne artikel er hovedsageligt kurateret for at forklare en vigtig operator i python (“IDENTITY OPERATOR”), og hvordan en identitetsoperator adskiller sig (er, ikke er) fra sammenligningsoperatoren (==) .

IDENTITET OPERATOR

Identitetsoperatør ( “er” og “er ikke” ) bruges til at sammenligne objektets hukommelsesplacering. Når et objekt oprettes i hukommelsen, tildeles objektet en unik hukommelsesadresse.

  • ‘==’ sammenlignes, hvis begge objektværdierne er identiske eller ikke.
  • ‘er’ sammenlignes, hvis begge objekter hører til den samme hukommelsesplacering.

Opret tre strengobjekter Navn, Navn1 og Navn2. Strengobjekt Navn og Navn2 holder den samme værdi, og Navn1 holder forskellige værdier.

Når vi opretter disse objekter, hvad der sker bag scenen er, at objektet oprettes i hukommelsen og vil være tilgængeligt i løbet af programmet.

Nu kan du bruge en sammenligningsoperator “==” til at kontrollere, om begge objektværdier er de samme. Outputtet fra sammenligningsoperatoren vil være en boolsk (sand eller falsk) værdi.

Nu hvor du har sammenlignet to værdier for at bestemme for lighed, lad os se på, hvordan identitetsoperatøren fungerer.

Den indbyggede Id() en funktion bruges til at få "objektet" til et objekt. Et heltal, der vil være unikt og konstant for objektet i løbet af dets levetid.

For at gøre det simpelt, tænk dette som unikt regerings-ID eller Emp-ID, der er tildelt dig, ligeledes tildeles en unik heltalværdi for hvert objekt.

Nu kan du sammenligne 2 objektreferencer ved hjælp af “is” operator.

Når jeg sammenligner Navn og Navn1 eller Navn2 ved hjælp af identitetsoperatøren, hvad det gør i backend er det bare at køre “id (Name) == id (Name2)” . Da id (navn) og id (navn2) begge deler den samme hukommelsesplacering, returnerer den sand.

Nu kommer den interessante del. Se på vores tidligere eksempel, hvor både Navn og Navn1 har identiske værdier og returnerer den samme heltal, når vi kører id() -funktionen. Hvorfor tror du, at "Name_new" og "Name_le" -objektet ikke er identisk, selvom de deler de samme værdier fra nedenstående skærmbillede?

Dette skyldes implementeringen af python-designet. Når du opretter et heltalobjekt i området (-5,256) og strengobjekter større end eller lig med 20 tegn, i stedet for at skabe forskellige objekter i hukommelsen til den samme værdi, fungerer disse objekter som en markør til allerede oprettede objekter.

Nedenfor vil den billedlige gengivelse give dig en klar idé om, hvad vi hidtil har set i denne artikel.

I denne artikel har vi set, hvad der er en identitetsoperatør. Hvordan sammenligningsoperatør og identitetsoperatør bruges, designimplementering af, hvordan et objekt oprettes i hukommelsen.