Apreneu l'operador d'identitat Python i la diferència entre l'operador == i IS.


Aquest article està elaborat principalment per explicar un operador important a Python (OPERADOR D'IDENTITAT) i com es diferencia (és, no és) un operador d'identitat de l'operador de comparació (==).

OPERADOR D'IDENTITAT

L'operador d'identitat (\és i \no és) s'utilitza per comparar la ubicació de memòria de l'objecte. Quan es crea un objecte a la memòria, s'assigna una adreça de memòria única a aquest objecte.

  • ‘==’ compara si els dos valors d'objecte són idèntics o no.
  • 'és' compara si tots dos objectes pertanyen a la mateixa ubicació de memòria.

Creeu tres objectes de cadena Nom, Nom1 i Nom2. L'objecte de cadena Nom i Nom2 tindran el mateix valor i Nom1 tindran valors diferents.

Quan creem aquests objectes, el que passa darrere de l'escena és que aquest objecte es crearà a la memòria i estarà disponible durant la vida útil del programa.

Ara podeu utilitzar un operador de comparació ==” per comprovar si els dos valors d'objecte són iguals. La sortida de l'operador de comparació serà un valor booleà (vertader o fals).

Ara que heu comparat dos valors per determinar la igualtat, fem una ullada a com funciona l'operador d'identitat.

La funció Id() incorporada s'utilitza per obtenir la \identitat d'un objecte. Un nombre enter que serà únic i constant per a l'objecte durant la seva vida útil.

Per fer-ho senzill, penseu que això és un identificador governamental únic o un identificador d'emp que us han assignat, de la mateixa manera s'assigna un valor enter únic per a cada objecte.

Ara podeu comparar 2 referències d'objectes utilitzant l'operador \is.

Quan comparo Nom i Nom1 o Nom2 mitjançant l'operador d'identitat, el que fa al fons és que simplement executa \id(Name) == id(Name2). Com que id(Nom) i id (Nom2) tots dos comparteixen la mateixa ubicació de memòria, retorna True.

Ara ve la part interessant. Mireu el nostre exemple anterior on tant Nom com Nom1 tenen valors idèntics i retornen el mateix valor enter quan executem la funció id(). Per què creus que l'objecte \Name_new i \Name_le no són idèntics tot i que comparteixen els mateixos valors de la captura de pantalla següent?

Això es deu a la implementació del disseny de Python. Quan creeu un objecte enter en l'interval (-5.256) i objectes de cadena superiors o iguals a 20 caràcters, en comptes de crear diferents objectes a la memòria pel mateix valor, aquests objectes actuen com a punter a objectes ja creats.

La representació pictòrica a continuació us donarà una idea clara del que hem vist fins ara en aquest article.

En aquest article, hem vist què és un operador d'identitat. Com s'utilitza l'operador de comparació i l'operador d'identitat, implementació del disseny sobre com es crea un objecte a la memòria.