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.