Sužinokite apie „Python“ tapatybės operatorių ir skirtumą tarp „==“ ir „IS“ operatoriaus


Šis straipsnis daugiausia skirtas paaiškinti svarbų „Python“ operatorių („IDENTITY OPERATOR“) ir tai, kuo tapatybės operatorius skiriasi (yra, nėra) nuo palyginimo operatoriaus (==) .

TAPATYBĖS OPERATORIUS

Identifikacijos operatorius ( „yra“ ir „nėra“ ) naudojamas objekto atminties vietai palyginti. Kai objektas yra sukurtas atmintyje, tam objektui priskiriamas unikalus atminties adresas.

  • ‘==’ palyginama, jei abi objekto vertės yra identiškos, ar ne.
  • ‘yra’ palyginama, jei abu objektai priklauso tai pačiai atminties vietai.

Sukurkite tris eilutės objektus Name, Name1 ir Name2. Eilutės objekte Pavadinimas ir Pavadinimas2 bus ta pati reikšmė, o Pavadinime 1 - skirtingos vertės.

Kai kuriame šiuos objektus, vyksta tai, kas vyksta užkulisyje, tas objektas bus sukurtas atmintyje ir bus prieinamas programos gyvavimo metu.

Dabar galite naudoti palyginimo operatorių “==” , kad patikrintumėte, ar abi objekto vertės yra vienodos. Palyginimo operatoriaus išvestis bus Bulio reikšmė (teisinga arba klaidinga).

Dabar, kai palyginote dvi vertybes, kad nustatytumėte lygybę, pažvelkime, kaip veikia tapatybės operatorius.

Integruota funkcija Id() naudojama norint gauti objekto „tapatybę“. Sveikasis skaičius, kuris bus unikalus ir pastovus objektui jo gyvavimo metu.

Kad būtų paprasčiau, galvokite, kad tai yra unikalus vyriausybės ID arba „Emp ID“, taip pat kiekvienam objektui priskiriama unikali sveikojo skaičiaus reikšmė.

Dabar galite palyginti 2 objektų nuorodas naudodami operatorių „is“ .

Kai palyginu „Name“ ir „Name1“ arba „Name2“ naudodamasis tapatybės operatoriumi, ką jis daro programinėje įrangoje, tai paprasčiausiai paleidžiama „id (Name) == id (Name2)“ . Kadangi ID (vardas) ir ID (vardas 2) atminties vieta yra ta pati, jis grąžina tiesą.

Dabar čia įdomi dalis. Pažvelkite į mūsų ankstesnį pavyzdį, kur tiek Vardas, tiek Vardas1 turi identiškas reikšmes ir pateikia tą pačią sveiko skaičiaus vertę, kai vykdome funkciją id() . Kaip manote, kodėl „Name_new“ ir „Name_le“ objektai nėra tapatūs, net jei jie turi tas pačias reikšmes iš žemiau pateikto ekrano?

Taip yra dėl pitono dizaino įgyvendinimo. Kai sukuriate sveiko skaičiaus objektą diapazone (-5,256) ir eilutės objektus, didesnius arba lygius 20 simbolių, užuot sukūrę skirtingus tos pačios vertės atminties objektus, šie objektai veikia kaip jau sukurtų objektų rodyklė.

Žemiau pateiktame vaizdiniame vaizde aiškiai suprasite, ką iki šiol matėme šiame straipsnyje.

Šiame straipsnyje mes matėme, kas yra tapatybės operatorius. Kaip naudojamas palyginimo operatorius ir tapatybės operatorius, dizaino įgyvendinimas, kaip objektas sukuriamas atmintyje.