Diferencia entre objetos mutables e inmutables en Python
Table of Contents
- ¿Qué significan los objetos mutables e inmutables?
- Objetos inmutables
- Objetos inmutables en Python
- Ejemplos de objetos inmutables
- Cómo se asigna un valor a un objeto inmutable
- Comportamiento de la asignación de objetos inmutables
- Cacheo de objetos inmutables
- Objetos mutables
- Objetos mutables en Python
- Ejemplos de objetos mutables
- Cómo se modifica un objeto Mutable
- Comportamiento de la modificación de objetos mutables
- Efectos inesperados al modificar objetos mutables dentro de una tupla
- Importancia de comprender la diferencia entre objetos mutables e inmutables
- Conclusiones
¿Qué significan los objetos mutables e inmutables?
En Python, existen dos tipos de objetos: mutables e inmutables. Estos términos se refieren a la capacidad de un objeto para cambiar su valor después de haber sido creado. En este vídeo, aprenderás las diferencias entre los objetos mutables e inmutables, y cómo manejarlos correctamente en tus programas.
Objetos inmutables
Objetos inmutables en Python
En Python, los objetos inmutables son aquellos que no pueden ser modificados después de su creación. Esto significa que una vez que se asigna un valor a un objeto inmutable, ese valor no puede ser cambiado. Algunos ejemplos de objetos inmutables son: tuplas, strings, enteros, frozensets, bytes, rangos y booleanos.
Ejemplos de objetos inmutables
Veamos algunos ejemplos de objetos inmutables en Python:
# Tupla
mi_tupla = (1, 2, 3)
# String
mi_string = "Hola"
# Entero
mi_entero = 10
# Frozenset
mi_frozenset = frozenset([1, 2, 3])
# Bytes
mis_bytes = b"Hello"
# Rango
mi_rango = range(0, 10)
# Booleano
mi_booleano = True
Cómo se asigna un valor a un objeto inmutable
Cuando se asigna un valor a un objeto inmutable en Python, se crea una nueva instancia de ese objeto en memoria. Por ejemplo:
mi_tupla = (1, 2, 3)
En este caso, se crea una nueva tupla en memoria y se asigna el valor (1, 2, 3)
a la variable mi_tupla
.
Comportamiento de la asignación de objetos inmutables
Dado que los objetos inmutables no pueden ser modificados, si intentamos asignar un nuevo valor a uno de sus elementos, Python lanzará un error. Por ejemplo:
mi_tupla = (1, 2, 3)
mi_tupla[0] = 4 # Generará un error
En este caso, al intentar modificar el primer elemento de la tupla, se generará un error porque las tuplas son objetos inmutables y no se les puede cambiar su contenido.
Cacheo de objetos inmutables
Para evitar el uso innecesario de memoria, Python realiza un cacheo de ciertos objetos inmutables, como números y strings pequeños. Esto significa que si asignamos el mismo valor a diferentes variables, Python utilizará la misma instancia del objeto en memoria. Por ejemplo:
num1 = 10
num2 = 10
print(num1 is num2) # True
En este caso, num1
y num2
apuntan a la misma instancia del número 10
en memoria, por lo que la expresión num1 is num2
devuelve True
.
Objetos mutables
Objetos mutables en Python
En Python, los objetos mutables son aquellos que pueden ser modificados después de su creación. Esto significa que se les puede cambiar su contenido sin necesidad de crear una nueva instancia del objeto. Algunos ejemplos de objetos mutables son: listas, diccionarios, sets, bytes y arrays.
Ejemplos de objetos mutables
Veamos algunos ejemplos de objetos mutables en Python:
# Lista
mi_lista = [1, 2, 3]
# Diccionario
mi_diccionario = {'nombre': 'Juan', 'edad': 25}
# Set
mi_set = {1, 2, 3}
# Bytes
mis_bytes = bytearray(b"Hello")
# Array
mi_array = array.array('i', [1, 2, 3])
Cómo se modifica un objeto mutable
Para modificar un objeto mutable en Python, simplemente se modifica su contenido directamente. Por ejemplo:
mi_lista = [1, 2, 3]
mi_lista[0] = 4
En este caso, se modifica el primer elemento de la lista y se asigna el valor 4
en su lugar.
Comportamiento de la modificación de objetos mutables
A diferencia de los objetos inmutables, los objetos mutables pueden ser modificados sin necesidad de crear una nueva instancia del objeto. Esto significa que la ubicación del objeto en memoria no cambia al modificar su contenido. Por ejemplo:
mi_lista = [1, 2, 3]
id_antes = id(mi_lista)
mi_lista[0] = 4
id_despues = id(mi_lista)
print(id_antes == id_despues) # True
En este caso, la variable id_antes
almacena la identificación del objeto en memoria antes de modificar su contenido, y la variable id_despues
almacena la identificación del objeto en memoria después de la modificación. Como se puede observar, ambas identificaciones son iguales, lo que indica que la ubicación del objeto en memoria no ha cambiado.
Efectos inesperados al modificar objetos mutables dentro de una tupla
Si una tupla contiene un objeto mutable como uno de sus elementos, pueden ocurrir efectos inesperados al modificar dicho objeto. Aunque la tupla en sí misma es inmutable, su contenido mutable puede cambiar, lo que puede llevar a resultados inesperados. Por ejemplo:
mi_tupla = (1, 2, ['a', 'b', 'c'])
mi_tupla[2][0] = 'x' # Modificación del contenido mutable
print(mi_tupla) # Salida: (1, 2, ['x', 'b', 'c'])
En este caso, al modificar el primer elemento de la lista que está dentro de la tupla, se cambia el contenido de la lista misma. Como resultado, la tupla se muestra con el cambio reflejado.
Importancia de comprender la diferencia entre objetos mutables e inmutables
Es importante comprender la diferencia entre objetos mutables e inmutables en Python, ya que esto puede afectar el comportamiento de tus programas. Al utilizar objetos inmutables, puedes estar seguro de que su contenido no cambiará después de asignar un valor. Esto puede ser útil en situaciones donde quieres asegurarte de que los datos no sean modificados accidentalmente. Por otro lado, los objetos mutables te permiten modificar su contenido directamente, lo que puede ser más eficiente en términos de rendimiento.
Conclusiones
En resumen, en Python existen objetos mutables e inmutables. Los objetos inmutables son aquellos que no pueden ser modificados después de su creación, mientras que los objetos mutables sí pueden ser modificados. Es importante tener en cuenta estas diferencias al programar en Python y elegir el tipo de objeto adecuado según tus necesidades. Ahora que entiendes la diferencia entre objetos mutables e inmutables, estarás mejor equipado para escribir código más eficiente y evitar efectos inesperados en tus programas.
Recursos:
- Documentación oficial de Python
- Tutorial de Python - Programiz
- Python Mutable vs Immutable Explained
Highlights
- Los objetos en Python pueden ser mutables o inmutables, dependiendo de su capacidad para cambiar después de ser creados.
- Los objetos inmutables en Python no pueden ser modificados una vez que se les asigna un valor, mientras que los objetos mutables pueden cambiar su contenido.
- Ejemplos de objetos inmutables en Python son las tuplas, strings, enteros, frozensets, bytes, rangos y booleanos.
- Ejemplos de objetos mutables en Python son las listas, diccionarios, sets, bytes y arrays.
- Los objetos inmutables se asignan a una nueva instancia en memoria cuando se les asigna un valor, mientras que los objetos mutables se modifican directamente en su ubicación original de memoria.
- Al modificar objetos mutables dentro de una tupla, se pueden producir efectos inesperados ya que la tupla en sí misma es inmutable pero su contenido mutable puede cambiar.
Preguntas frecuentes
Q: ¿Cuál es la ventaja de usar objetos inmutables en Python?
A: Los objetos inmutables garantizan que su contenido no cambie después de ser asignados, lo que puede ser útil en situaciones donde se necesita conservar la integridad de los datos.
Q: ¿Qué ocurre si intento modificar un objeto inmutable en Python?
A: Al intentar modificar un objeto inmutable en Python, se generará un error ya que estos objetos no pueden ser cambiados después de su creación.
Q: ¿Cómo puedo modificar un objeto mutable en Python?
A: Los objetos mutables pueden ser modificados directamente accediendo a sus elementos y cambiando su contenido.