Sobes.tech
Middle

Como é que a propriedade de mutabilidade muda ao aninhar uma lista mutável num objeto imutável em Python?

sobes.tech IA

Resposta da IA

Em Python, a imutabilidade de um objeto refere-se ao próprio objeto, não ao conteúdo ao qual ele faz referência. Se tiver um objeto imutável (por exemplo, uma tupla) que contém uma lista mutável, não pode alterar a tupla em si (por exemplo, substituir ou eliminar elementos), mas pode modificar o conteúdo da lista interna.

Ou seja, um objeto imutável garante que a referência à lista interna não mudará, mas a própria lista permanece mutável. Isso pode levar a comportamentos inesperados se assumir que todo o objeto é completamente imutável.

Exemplo:

immutable_tuple = (1, 2, [3, 4])

# Não é possível modificar a tupla:
# immutable_tuple[0] = 10  # Erro

# Mas é possível modificar o conteúdo da lista interna:
immutable_tuple[2].append(5)
print(immutable_tuple)  # (1, 2, [3, 4, 5])

Assim, a mutabilidade dos objetos internos é preservada, mesmo que o objeto externo seja imutável.