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 la pantalla 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 mutables en Python

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: โ€“

Objetos inmutables en Python

Despuรฉs de utilizar a=344, hay un nuevo objeto referenciado con โ€œaโ€. El siguiente diagrama lo representa: โ€“

Objetos inmutables en Python

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' y '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
Establecer conjunto de objetos distintos que son de naturaleza desordenada Mudable
Congelado Establecer clase de naturaleza inmutable. Inmutable
Dict Diccionario o mapeo asociativo Mudable

Resumir este post con: