Léiert Python Identitéitsoperateur an Ënnerscheed tëscht == an IS Operator


Dësen Artikel ass haaptsächlech curéiert fir e wichtege Bedreiwer am Python z'erklären (IDENTITY OPERATOR) a wéi en Identitéitsbedreiwer ënnerscheet (ass, ass net) vum Verglachoperateur (==).

IDENTITEIT OPERATOR

Identitéitsbedreiwer (\ass an \ass net) gëtt benotzt fir d'Erënnerungsplaz vum Objet ze vergläichen. Wann en Objet an der Erënnerung erstallt gëtt, gëtt eng eenzegaarteg Erënnerungsadress un deem Objet zougewisen.

  • ‘==’ vergläicht ob béid Objektwäerter identesch sinn oder net.
  • 'ass' vergläicht wann souwuel den Objet zu der selwechter Erënnerungsplaz gehéiert.

Erstellt dräi Stringobjekter Numm, Numm1, an Numm2. String Objet Name an Name2 wäerten dee selwechte Wäert halen an Name1 hält verschidde Wäerter.

Wa mir dës Objeten erstellen, wat geschitt hannert der Szen ass, datt den Objet an der Erënnerung erstallt gëtt a während der Liewensdauer vum Programm verfügbar ass.

Elo kënnt Dir e Vergläichsbedreiwer == benotzen fir ze kontrolléieren ob béid Objektwäerter d'selwecht sinn.Den Ausgang vum Vergläichsbedreiwer wäert e booleschen (Wou oder falsch) Wäert sinn.

Elo datt Dir zwee Wäerter verglach hutt fir d'Gläichheet ze bestëmmen, loosst eis kucken wéi den Identitéitsbedreiwer funktionnéiert.

Déi agebaut Id() eng Funktioun gëtt benotzt fir d'Identitéit vun engem Objet ze kréien.Eng ganz Zuel déi fir den Objet während senger Liewensdauer eenzegaarteg a konstant ass.

Fir et einfach ze maachen, denkt dëst als eenzegaarteg Regierungs-ID oder Emp ID, déi Iech zougewisen ass, och en eenzegaartegen ganzen Zuelewäert gëtt fir all Objet zougewisen.

Elo kënnt Dir 2 Objektreferenze vergläichen mam \is Bedreiwer.

Wann ech Numm an Numm1 oder Numm2 mam Identitéitsbedreiwer vergläichen, wat et um Backend mécht ass et einfach \id(Name) == id(Name2). Zënter id(Name) an id (Name2) béid deelen déiselwecht Erënnerungsplaz, et gëtt True zréck.

Elo kënnt den interessanten Deel. Kuckt eist viregt Beispill wou souwuel den Numm wéi och den Numm1 identesch Wäerter hunn an dee selwechte ganze Wäert zréckkënnt wa mir id() Funktioun lafen. Firwat denkt Dir datt den Objet Name_new an Name_le net identesch ass, obwuel se déiselwecht Wäerter aus dem Screenshot hei ënnen deelen?

Dëst ass wéinst der Python Design Implementatioun. Wann Dir en ganzt Zuelen Objet am Beräich erstellt (-5.256) a Stringobjekter méi grouss wéi oder gläich wéi 20 Zeechen, amplaz verschidden Objeten an der Erënnerung fir dee selwechte Wäert ze kreéieren, handelen dës Objeten als Zeiger op scho geschafen Objeten.

Ënnert bildlech Representatioun gëtt Iech eng kloer Iddi iwwer wat mir bis elo an dësem Artikel gesinn hunn.

An dësem Artikel hu mir gesinn wat en Identitéitsbedreiwer ass. Wéi Vergläichsbedreiwer an Identitéitsbedreiwer benotzt gëtt, Design Implementatioun op wéi en Objet an der Erënnerung erstallt gëtt.