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.
Uso básico
En este paso, comenzaremos con el uso más básico del operador is.
- Abra el intérprete de Python en la terminal.
python3
- Defina dos variables,
ayb, y asígnele el mismo valor a ambas.
a = "Hello"
b = "Hello"
- Imprima la dirección de memoria de
aybutilizando la funciónid().
print(id(a))
print(id(b))
- Utilice el operador
ispara comprobar siaybse 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.
- Defina dos variables,
cyd, y asígnele a ambas una lista vacía[].
c = []
d = []
- Imprima la dirección de memoria de
cydutilizando la funciónid().
print(id(c))
print(id(d))
- Utilice el operador
ispara comprobar sicydse 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.
- Ahora, defina dos variables,
eyf, y asígnele a ambas un valor entero.
e = 10
f = 10
- Imprima la dirección de memoria de
eyfutilizando la funciónid().
print(id(e))
print(id(f))
- Utilice el operador
ispara comprobar sieyfse 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.
- Defina una función
my_function()que tome dos parámetros,xyy.
def my_function(x, y):
print(x is y)
- 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.
- Defina una clase
MyClasscon un atributovalue.
class MyClass:
def __init__(self, value):
self.value = value
- Defina dos instancias de la clase
MyClass,obj1yobj2, con el mismovalue.
obj1 = MyClass("Hello")
obj2 = MyClass("Hello")
- Imprima la dirección de memoria de
obj1.valueyobj2.valueutilizando la funciónid().
print(id(obj1.value))
print(id(obj2.value))
- Utilice el operador
ispara comprobar siobj1.valueyobj2.valuese 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.
- Ahora, defina dos instancias de la clase
MyClass,obj3yobj4, con un objeto mutable como suvalue.
obj3 = MyClass([])
obj4 = MyClass([])
- Imprima la dirección de memoria de
obj3.valueyobj4.valueutilizando la funciónid().
print(id(obj3.value))
print(id(obj4.value))
- Utilice el operador
ispara comprobar siobj3.valueyobj4.valuese 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.



