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


Este artículo está diseñado principalmente para explicar un operador importante en Python ("OPERADOR DE IDENTIDAD") y cómo un operador de identidad difiere (es, no es) del operador de comparación (u003du003d) .

OPERADOR DE IDENTIDAD

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

  • ‘==’ compares if both the object values are identical or not.
  • ‘is’ compares if both the object belongs to the same memory location.

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

Cuando creamos estos objetos, lo que sucede detrás de la 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 “u003du003d” para comprobar si los valores de ambos objetos 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 Id () incorporada se usa para obtener la "identidad" de un objeto. Un número entero que será único y constante para el objeto durante su vida.

Para simplificarlo, piense en esto como una identificación gubernamental única o una identificación de empresa asignada, de la misma manera se asigna un valor entero único para cada objeto.

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

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

Ahora aquí viene la parte interesante. Mire nuestro ejemplo anterior donde tanto Nombre como Nombre1 tienen valores idénticos y devuelve 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 cadenas de objetos mayores o iguales a 20 caracteres, en lugar de crear diferentes objetos en la memoria por el mismo valor, estos objetos actúan 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.

En este artículo hemos visto qué es un operador de identidad. Cómo se usa 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.