Búsqueda de sitios web

Aprenda el operador de identidad de Python y la diferencia entre el operador "==" y "IS"


Este artículo está diseñado principalmente para explicar un operador importante en Python (“OPERADOR DE IDENTIDAD”) y en qué se diferencia un operador de identidad (es, no es ) del operador de comparación (==).

OPERADOR DE IDENTIDAD

El operador de identidad (“is ” y “is not ”) se utiliza para comparar la ubicación de memoria del objeto. Cuando se crea un objeto en la memoria, se asigna una dirección de memoria única a ese objeto.

  • '==' compara si ambos valores de objeto son idénticos o no.
  • 'is' compara si ambos objetos pertenecen a la misma ubicación de memoria.

Cree tres objetos de cadena Nombre, Nombre1 y Nombre2. El objeto de cadena Nombre y Nombre2 tendrán el mismo valor y Nombre1 tendrán valores diferentes.

Cuando creamos estos objetos, lo que sucede detrás de escena es que ese objeto se creará en la memoria y estará disponible durante la vida útil del programa.

Ahora puede utilizar un operador de comparación “== ” para comprobar si ambos valores de objeto son iguales. La salida del operador de comparación será un valor booleano (Verdadero o Falso).

Ahora que ha comparado dos valores para determinar la igualdad, echemos un vistazo a cómo funciona el operador de identidad.

La función incorporada Id() se utiliza para obtener la “identidad” de un objeto. Un número entero que será único y constante para el objeto durante su vida.

Para hacerlo simple, piense en esto como un ID gubernamental único o un ID emp asignado a usted; de la misma manera, se asigna un valor entero único para cada objeto.

Ahora puede comparar 2 referencias de objetos usando el operador “is”.

Cuando comparo Nombre y Nombre1 o Nombre2 usando el operador de identidad, lo que hace en el backend es simplemente ejecutar “id(Nombre ) == id(Nombre2) ”. Dado que id(Nombre) e id(Nombre2) comparten la misma ubicación de memoria, devuelve Verdadero.

Ahora viene la parte interesante. Mire nuestro ejemplo anterior donde tanto Nombre como Nombre1 tienen valores idénticos y devuelven el mismo valor entero cuando ejecutamos la función id(). ¿Por qué crees que los objetos “Name_new” y “Name_le” no son idénticos aunque comparten los mismos valores de la siguiente captura de pantalla?

Esto se debe a la implementación del diseño de Python. Cuando crea un objeto entero en el rango (-5,256) y objetos de cadena mayores o iguales a 20 caracteres, en lugar de crear diferentes objetos en la memoria para el mismo valor, estos objetos actúa como un puntero a objetos ya creados.

La siguiente representación pictórica le dará una idea clara de lo que hemos visto hasta ahora en este artículo.

Resumen

En este artículo hemos visto qué es un operador de identidad. Cómo se utiliza el operador de comparación y el operador de identidad, implementación del diseño sobre cómo se crea un objeto en la memoria.