¿Son las tuplas realmente inmutables en Python?

Una de las preguntas que enfrenté hoy, que probó la inmutabilidad de las tuplas en Python:

A pesar de que las tuplas son inmutables, el objeto en su interior puede ser de gran valor.

Como en >>> t = (1, 2, [3, 4]) la lista es mutable, por lo que puede cambiar el valor de la lista con la asignación aumentada. += pero entonces se levanta la excepción.

Aquí se modifica la lista de t [2] como se puede ver.

 t =(1,2,[3,4]) >>> id(t[2]) 38073768 >>> t[2] += [5,6] Traceback (most recent call last): File "", line 1, in  TypeError: 'tuple' object does not support item assignment >>> t[2] [3, 4, 5, 6] >>> id(t[2]) 38073768 

Como puedes ver, la identificación de t [2] nunca se cambia.

introduzca la descripción de la imagen aquí

En cuanto al segundo caso: t[2] = t[2] + [5,6] – crea una nueva lista y luego la asigna a t[2]

 >>> li = [1,2] >>> id(li) 38036304 >>> li = li + [3,4] >>> id(li) 38074368 >>> li += [5,6] >>> id(li) 38074368 

Como puede ver, List = list + [] es una nueva lista con un ID diferente. y como la tupla es inmutable, t [2] no se asigna a un nuevo objeto en el segundo caso