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.