Igualdad e Identidad en python

Aquellos que no estén familiarizados con el lenguaje de programación Python pueden estar un poco confundidos acerca de la diferencia entre los dos. «==» (ecuación) y palabras clave de Python «diente» (identificar). Incluso he visto a programadores experimentados encontrar diferencias sutiles para introducir errores lógicos en su código y confundirse entre los dos.

Recomendado: framework en python

En este artículo, exploraremos este interesante tema.

Igualdad en Python

Para muchos lenguajes de programación, igualdad Otros usan el doble signo igual («==») para representar este concepto. Veamos la igualdad real.

>>> num = 1
>>> num_two = num
>>> num == num_two
True

Aquí crearemos una variable para llamar Número Luego asígnelo al entero 1. Luego, cree una segunda variable, llamada . num_dos y asignarlo a Número. Finalmente, pregunte a Python si num y num_two son iguales.En este caso, Python tiene esta expresión real.

Recomendado: Bibliotecas python recomendadas para machine learning

Otra forma de pensar en la igualdad es preguntarle a Python si dos variables contienen lo mismo. En el ejemplo anterior, ambos contienen el entero 1. Veamos qué sucede si creamos dos listas con el mismo valor.

>>> list_one = [1, 2, 3]
>>> list_two = [1, 2, 3]
>>> list_one == list_two
True

Funciona como se esperaba.

Ahora veamos qué sucede cuando le pedimos a Python un identificador.

>>> num is num_two
True
>>> list_one is list_two
False

¿Que está sucediendo aquí? El primer ejemplo devuelve True, mientras que el segundo ejemplo devuelve False. Discutiremos esto en la siguiente sección.

Identidad en Python

Cuando se le preguntó si Python es un objeto es lo mismo Como otro objeto, preguntas si tienen la misma identidad. ¿Son realmente el mismo objeto? Para num y num_two, la respuesta es sí. Python proporciona una manera fácil de probar que está integrado identificador() Trabaja:

>>> id(num)
10914368
>>> id(num_two)
10914368

La razón por la que estas dos variables comparten el mismo ID es porque cuando asigno num a num_two (es decir, num_two = num), estoy diciendo que tengo que volver a Python. Si usa C o C++, puede pensar en ID como un puntero, donde num y num_two apuntan a la misma ubicación en la memoria. Si usa la función id() de Python en dos objetos de lista, puede ver rápidamente que sus ID son diferentes.

>>> id(list_one)
140401050827592
>>> id(list_two)
140401050827976

Entonces, si le pregunta a Python «list_one is list_two», devolverá False. Tenga en cuenta que también puede preguntarle a Python si un objeto es otro.

>>> list_one = [1, 2, 3]
>>> list_two = [1, 2, 3]
>>> list_one is not list_two
True

Veamos qué pasa cuando mezclamos igualdad e identidad.

Mezclar juntos

Cuando comencé como programador de Python, sabía que este tipo de cosas podían conducir a errores ridículos. Esto se debe a que verá una declaración de recomendación similar a la siguiente:

if obj is None: 
    # do something
    call_function()

Así que ingenuamente asumí que podrías hacer algo como esto:

>>> def func():
    return [1, 2, 3]

>>> list_one = [1, 2, 3]
>>> list_two = func()
>>> list_one is list_two
False

Por supuesto, eso no funcionará porque hay dos objetos diferentes con ID diferentes. Esto es lo que quiero hacer aquí:

>>> list_one == list_two
True

Otro problema surge cuando creas dos variables que apuntan al mismo objeto, pero piensas que pueden trabajar independientemente una de la otra.

>>> list_one = list_two = [1, 2, 3]
>>> list_one == list_two
True
>>> list_one is list_two
True
>>> list_two.append(5)
>>> list_one
[1, 2, 3, 5]

En este ejemplo, hemos creado dos variables, ambas apuntando a un objeto, luego intento agregar un elemento lista_dos.. lo que muchos novatos no saben es que acaban de agregar este elemento. lista_uno de la misma forma. Esto se debe a que list_one y list_two apuntan exactamente al mismo objeto Esto se demostró cuando le pregunté a Python lista_uno es lista_dos él está de vuelta real..

Palabras finales

Espero que puedas entender la diferencia entre igualdad (==) e identidad (es) en Python. La igualdad simplemente pregunta si el contenido de dos objetos es el mismo, la lista debe estar en el mismo orden. El ID de Python apunta al objeto al que se hace referencia. En Python, el ID de un objeto es un entero único (o largo) constante que existe durante la vida útil del objeto.

¿ Te fue útil este artículo ?
⬇️ Ayudame compartiendo para poder llegar a más personas.⬇️

4 comentarios en «Igualdad e Identidad en python»

  1. ¡La identidad en Python es clave para entender el lenguaje! ¿Qué opinan ustedes?

    • ¡Totalmente de acuerdo! Sin comprender la identidad en Python, es difícil avanzar en el dominio del lenguaje. Es fundamental para evitar confusiones y errores. Quienes no lo entiendan, se perderán en el camino. La identidad es la base.

  2. ¿En serio crees que Python promueve la igualdad e identidad de forma equitativa? ¡Discutamos!

  3. ¿Creen que la identidad y la igualdad en Python son conceptos claros o confusos?

Los comentarios están cerrados.