Operador is en Python

PythonBeginner
Practicar Ahora

Introducción

El operador is en Python se utiliza para comprobar si dos variables se refieren al mismo objeto en memoria. Esto es diferente del operador ==, que comprueba si dos variables tienen el mismo valor. En este laboratorio, exploraremos cómo funciona el operador is y cómo puede ser útil en la programación de Python. Este es un concepto importante de entender, especialmente cuando se trabaja con objetos mutables como listas y diccionarios. En este laboratorio, exploraremos el uso del operador is en Python con ejemplos simples y complejos, y veremos cómo se puede utilizar para escribir código eficiente y confiable.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 97%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Uso básico

En este paso, comenzaremos con el uso más básico del operador is.

  1. Abra el intérprete de Python en la terminal.
python3
  1. Defina dos variables, a y b, y asígnele el mismo valor a ambas.
a = "Hello"
b = "Hello"
  1. Imprima la dirección de memoria de a y b utilizando la función id().
print(id(a))
print(id(b))
  1. Utilice el operador is para comprobar si a y b se refieren al mismo objeto.
print(a is b)

La salida del código anterior debe ser True, ya que a y b se refieren al mismo objeto en memoria.

Objetos inmutables vs mutables

En este paso, exploraremos cómo se comporta el operador is con objetos inmutables y mutables.

  1. Defina dos variables, c y d, y asígnele a ambas una lista vacía [].
c = []
d = []
  1. Imprima la dirección de memoria de c y d utilizando la función id().
print(id(c))
print(id(d))
  1. Utilice el operador is para comprobar si c y d se refieren al mismo objeto.
print(c is d)

La salida del código anterior debe ser False, ya que c y d son objetos mutables y no son el mismo objeto en memoria.

  1. Ahora, defina dos variables, e y f, y asígnele a ambas un valor entero.
e = 10
f = 10
  1. Imprima la dirección de memoria de e y f utilizando la función id().
print(id(e))
print(id(f))
  1. Utilice el operador is para comprobar si e y f se refieren al mismo objeto.
print(e is f)

La salida del código anterior debe ser True, ya que e y f son objetos inmutables y comparten el mismo objeto en memoria.

Parámetros de función

En este paso, exploraremos cómo se puede utilizar el operador is con parámetros de función.

  1. Defina una función my_function() que tome dos parámetros, x y y.
def my_function(x, y):
    print(x is y)
  1. Llame a la función my_function() dos veces, una vez con objetos inmutables y una vez con objetos mutables.
my_function(10, 10)
my_function([], [])

La salida de la primera llamada debe ser True y la salida de la segunda llamada debe ser False.

Uso avanzado

En este paso, exploraremos algunos usos avanzados del operador is.

  1. Defina una clase MyClass con un atributo value.
class MyClass:
    def __init__(self, value):
        self.value = value
  1. Defina dos instancias de la clase MyClass, obj1 y obj2, con el mismo value.
obj1 = MyClass("Hello")
obj2 = MyClass("Hello")
  1. Imprima la dirección de memoria de obj1.value y obj2.value utilizando la función id().
print(id(obj1.value))
print(id(obj2.value))
  1. Utilice el operador is para comprobar si obj1.value y obj2.value se refieren al mismo objeto.
print(obj1.value is obj2.value)

La salida del código anterior debe ser True, ya que el atributo value es un objeto inmutable y ambas instancias comparten el mismo objeto en memoria.

  1. Ahora, defina dos instancias de la clase MyClass, obj3 y obj4, con un objeto mutable como su value.
obj3 = MyClass([])
obj4 = MyClass([])
  1. Imprima la dirección de memoria de obj3.value y obj4.value utilizando la función id().
print(id(obj3.value))
print(id(obj4.value))
  1. Utilice el operador is para comprobar si obj3.value y obj4.value se refieren al mismo objeto.
print(obj3.value is obj4.value)

La salida del código anterior debe ser False, ya que el atributo value es un objeto mutable y ambas instancias no comparten el mismo objeto en memoria.

Resumen

En este laboratorio, aprendimos sobre el operador is en Python y cómo se puede utilizar para comprobar si dos variables se refieren al mismo objeto en memoria. Exploramos el comportamiento del operador is con objetos inmutables y mutables, parámetros de función y instancias de clase. Al entender el operador is, podemos escribir código Python más eficiente y confiable.