Objetos mutables e inmutables en Python {EJEMPLOS}
¿Qué es un objeto mutable?
mutable en Python Puede definirse como el objeto que puede cambiar o considerarse como algo cambiable en la naturaleza. Mutable significa la capacidad de modificar o editar un valor.
Objetos mutables en Python Permitir a los programadores tener objetos que puedan cambiar sus valores. Generalmente se utilizan para almacenar una colección de datos. Puede considerarse como algo que ha mutado y el estado interno aplicable dentro de un objeto ha cambiado.
¿Qué son los objetos inmutables?
Objetos inmutables en Python Se pueden definir como objetos que no cambian sus valores y atributos con el tiempo.
Estos objetos se vuelven permanentes una vez creados e inicializados, y forman una parte crítica de las estructuras de datos utilizadas en Python.
Python se utiliza en números, tuplas, cadenas, conjuntos congelados y clases definidas por el usuario con algunas excepciones. No pueden cambiar, y sus valores permanecen permanentes una vez que se inicializan y, por lo tanto, se denominan inmutables.
In Python, todo es un objeto
En Los Python En un lenguaje de programación, todo puede considerarse como un objeto que comprende listas, números enteros y funciones. Esta característica se puede comparar con otros lenguajes de programación que admiten objetos.
Esta característica se puede verificar usando un Python intérprete como se muestra a continuación: –
Python código:
print("The following instance is an object:",isinstance(3,object)) print("Another instance for object", isinstance(True, object)) def my_func(): return "guru99" print("This is a function example and regarded as an object in Python:", isinstance(my_func, object))
Salida:
A following instance is an object: True Another instance for object True This is a function example and regarded as an object in Python: True
Además, Python proporciona una función incorporada llamada id que devuelve la dirección del objeto tal como está presente en la memoria del Python lenguaje de programación.
Python código:
z=200 id(z) print("The id of object is", id(z))
Salida:
the id of object is 9795360
En el código anterior, la función id que tiene la sintaxis id(obj) proporciona la dirección de obj en Python memoria. Aquí, hay un objeto llamado z, y tiene una asignación de 200. Luego, el objeto z se pasa a la función id como id(z), y el Python entrega la dirección del objeto como 9795360.
Objetos mutables en Python
En un objeto mutable, el valor del objeto cambia durante un período de tiempo.
En este ejemplo, hemos explicado los objetos mutables en Python, y esto utiliza listas como una aplicación de objetos mutables como se muestra a continuación: –
Python Código:
mut_list = [1, 2, 3] print("The list in Python",mut_list) mut_list[0] = 'Gurru99' mut_list print("The list in Python after changing value",mut_list)
Salida:
The list in Python [1, 2, 3] The list in Python after changing value ['Gurru99', 2, 3]
Como podemos ver en el ejemplo anterior, la lista mutable en Python tenía valores de 1,2,3. El primer elemento de la lista mutable cambia de 1 a Guru99 y no crea un nuevo objeto cuando se inicializa un nuevo valor.
Aquí podemos utilizar el método id para utilizarlo. A continuación se muestra el uso del método id para objetos mutables, como se muestra a continuación:
Python Código:
mut_list = [1, 2, 3] print("The list in Python",mut_list) print("the id of the list is ",id(mut_list)) mut_list[0] = 'Gurru99' mut_list print("The mut list in Python after changing value",mut_list) print("the id of the list is post change in value",id(mut_list))
Salida
The list in Python [1, 2, 3] the id of the list is 139931568729600 The list in Python after changing value ['Gurru99', 2, 3] the id of the list is post change in value 139931568729600
La siguiente figura ilustra el objeto mutable en Python como se muestra a continuación: –
Objetos inmutables en Python
Objetos inmutables en Python son objetos en los que las instancias no cambian durante el período. Las instancias inmutables de un tipo específico, una vez creadas, no cambian, y esto se puede verificar usando el método id de Python.
Tomemos un ejemplo de objetos de tipo entero en Python que ilustra el concepto de objetos inmutables en Python como se muestra a continuación: –
Python Código:
a=244 print("the number before change is",a) print("the id of number before change is",id(a)) a=344 print("the number after change is",a) print("the id of number after change is",id(a))
Salida
the number before a change is 244 the id of number before change is 9796768 the number before change is 344 the id of number before change is 140032307887024
Arriba se pudo ver que hay un cambio en "a". Estudiemos cómo funciona el mecanismo:
- No hay ningún cambio en el valor del objeto cuando se inicializa "a" con 344.
- En cambio, se crea un nuevo objeto y se limita con "a".
- El otro objeto asignado como 244 ya no sería accesible.
- El ejemplo anterior utilizó un objeto entero.
En a=244, se crea un nuevo objeto y se hace referencia a "a" como se muestra a continuación: –
Después de utilizar a=344, hay un nuevo objeto referenciado con “a”. El siguiente diagrama lo representa: –
Por lo tanto, siempre que se asigna un nuevo valor al nombre de tipo int, hay un cambio en la vinculación del nombre con otro objeto. El mismo principio se aplica a las tuplas, instrumentos de cuerda, flotante y booleano, por lo que se denomina inmutable.
Implicaciones para las claves del diccionario en Python
Los diccionarios se pueden definir como colecciones ordenadas que almacenan datos en formato clave y no permiten duplicados. Los diccionarios contienen una clave que tiene el par de valores correspondiente alineado. Son de tipos mutables y su contenido se puede cambiar incluso después de su inicialización y creación.
En cualquier momento, la clave apunta a un elemento específico a la vez. Las claves de los diccionarios son inmutables.
Tomemos un escenario hipotético como se muestra a continuación: –
a = [4, 6] b = [5, 6, 7] my_dict = {a: 'x', b: 'y'} print(my_dict)
Salida: – Lo anterior Python El código no produce ningún resultado y, en cambio, genera un error de tipo que no se puede dividir en hash. Esta es una situación hipotética y no se utiliza en el Python compilador
Aquí, a
se define como [4,6] y en el diccionario se define como x. Aquí, b
se define como [5,6,7] y en el diccionario se define como y.
- La clave 'a' tiene el valor de [4,6] y se inicializa aún más en x.
- La clave 'b' tiene el valor de [5,6,7] que luego se inicializa a 'y' en un diccionario.
- Ahora supongamos que el valor de 'una' Se añaden 5 y 7, que es una clave para el diccionario.
- Entonces el diccionario ha sido mutado y daría a ambos 'X' e 'y' como valores para el diccionario anterior.
Consideremos el siguiente escenario ilustrado arriba:
a = [5, 6,7] b = [5, 6, 7] my_dict = {a: 'x', b: 'y'} print(my_dict)
Por lo tanto, como lenguaje de programación, Python hace que las claves del diccionario sean inmutables y los diccionarios sean tipos de datos inmutables.
Excepciones en la inmutabilidad
Sin embargo, Python proporciona excepciones a la inmutabilidad; dichas excepciones se pueden observar para el tipo de objeto tupla. Una tupla puede ser una combinación de tipos de objetos mutables e inmutables. Tomemos un ejemplo para explicar las excepciones en inmutabilidad como se muestra a continuación: –
Python Código:
tupexample=([1,1],'guru99') print("the tuple before change",tupexample) print("the id of tuple before change",id(tupexample)) tupexample=([2,2],'guru99') print("the tuple after change",tupexample) print("the id of tuple after change",id(tupexample))
Salida:
the tuple before change ([1, 1], 'guru99') the id of tuple before change 140649480694656 the tuple after change ([2, 2], 'guru99') the id of tuple after change 140649480694592
Puede ver en el código anterior que el primer elemento, que es una lista, es mutable, mientras que la tupla es inmutable. El valor de la tupla no se puede cambiar, pero el contenido de la lista presente dentro de la tupla puede cambiar su valor.
Por lo tanto, esto plantea una excepción: los objetos inmutables no cambian su valor, pero el valor de los constituyentes cambia su valor.
Objetos mutables versus inmutables
Estas son las principales diferencias entre objetos mutables e inmutables:
Objeto mutable | Objeto inmutable |
---|---|
El estado del objeto se puede cambiar una vez creado. | El estado del objeto no se puede cambiar una vez creado. |
Los objetos mutables no se consideran de naturaleza segura para subprocesos. | Los objetos inmutables se consideran de naturaleza segura para subprocesos. |
Los objetos mutables no se vuelven definitivos y, por lo tanto, el programador puede seguir cambiando objetos mutables y usar los mismos objetos. | Es fundamental hacer que las clases sean definitivas cuando se crea el objeto inmutable. |
Python Tipos de datos inmutables
Clase | Explicación | Inmutable o no |
---|---|---|
bool | Valor booleano | Inmutable |
Int. | Valor entero (la magnitud puede ser arbitraria) | Inmutable |
Flotador | Número de punto flotante | Inmutable |
Lista | Secuencia de objetos de naturaleza mutable. | Mudable |
Tupla | Secuencia de objetos de naturaleza inmutable. | Inmutable |
Str. | Cadena de caracteres | Inmutable |
Set | conjunto de objetos distintos que son de naturaleza desordenada | Mudable |
Congelado | Establecer clase de naturaleza inmutable. | Inmutable |
Dict | Diccionario o mapeo asociativo | Mudable |