Õpi Pythoni identiteedioperaatorit ja operaatori "==" ja "IS" erinevust


Selle artikli eesmärk on selgitada peamiselt Pythoni olulist operaatorit („IDENTITEEDI OPERAATOR”) ja seda, kuidas identiteedioperaator erineb (on, ei ole) võrdlusoperaatorist (==) .

IDENTITEEDI KÄITAJA

Objekti mälu asukoha võrdlemiseks kasutatakse identiteedioperaatorit ( “on” ja “ei ole” ). Kui objekt luuakse mällu, eraldatakse sellele objektile ainulaadne mäluaadress.

  • ‘==’ võrreldakse, kui mõlemad objekti väärtused on identsed või mitte.
  • ‘on’ võrreldakse, kui mõlemad objektid kuuluvad samasse mälukohta.

Looge kolm stringiobjekti Nimi, Nimi1 ja Nimi2. Stringiobjekt Nimi ja Nimi2 hoiavad sama väärtust ja Nimi1 erinevaid väärtusi.

Nende objektide loomisel toimub stseeni taga see, et see objekt luuakse mällu ja on saadaval programmi eluea jooksul.

Nüüd saate võrdlusoperaatori “==” abil kontrollida, kas mõlemad objekti väärtused on samad. Võrdlusoperaatori väljund on tõeväärtus (tõene või vale).

Nüüd, kui olete võrdsuse kindlakstegemiseks võrrelnud kahte väärtust, heitkem pilk identiteedioperaatori toimimisele.

Sisseehitatud funktsiooni Id() kasutatakse objekti „identiteedi“ saamiseks. Täisarv, mis on objekti jaoks selle eluea jooksul ainulaadne ja konstantne.

Lihtsamaks muutmiseks arvake, et see on teile määratud ainulaadne riiklik ID või Emp ID, samuti määratakse igale objektile kordumatu täisarv.

Nüüd saate operaatoriga “is” võrrelda kahte objektiviidet.

Kui võrdlen nime ja nime1 või nime2 identiteedioperaatori abil, mida ta taustaprogrammis teeb, siis käivitatakse see lihtsalt kood “id (Name) == id (Name2)” . Kuna id (nimi) ja id (nimi2) jagavad sama mälu asukohta, tagastab see väärtuse True.

Nüüd tuleb siit huvitav osa. Vaadake meie eelmist näidet, kus nii Nimi kui ka Nimi1 on identsete väärtustega ja tagastavad sama täisarvu, kui käivitame funktsiooni id() . Miks te arvate, et objektid „Name_new” ja „Name_le” pole identsed, kuigi neil on samad väärtused nagu allpool oleval ekraanipildil?

Selle põhjuseks on pythoni disaini juurutamine. Kui loote vahemikus (-5,256) täisarvulise objekti ja stringide objektid, mis on suuremad või võrdsed 20 tähemärgiga, toimivad mälus erinevate objektide loomise asemel sama väärtuse jaoks need objektid juba loodud objektide kursorina.

Allpool piltlik kujutis annab teile selge ülevaate sellest, mida oleme selles artiklis seni näinud.

Selles artiklis oleme näinud, mis on identiteedioperaator. Kuidas kasutatakse võrdlusoperaatorit ja identiteedioperaatorit, disaini rakendamine selle kohta, kuidas objekt mällu luuakse