Sobes.tech
Middle

Como você entende o modelo de referência no qual a linguagem de programação Python se baseia?

sobes.tech IA

Resposta da IA

Em Python, as variáveis são referências (ligações) a objetos na memória, não recipientes para os próprios valores. Quando atribuirmos um valor a uma variável, ela começa por apontar para um objeto que contém esse valor. Ao alterar uma variável que referencia um objeto mutável (por exemplo, uma lista ou um dicionário), o próprio objeto ao qual a variável faz referência é alterado. Ao alterar uma variável que referencia um objeto imutável (por exemplo, um número, uma string ou uma tupla), um novo objeto é criado na memória, e a variável começa a apontar para ele.

# Objeto imutável (int)
a = 10
b = a # a e b inicialmente referenciam o mesmo objeto
print(id(a), id(b)) # Mesmo id

a = 20 # Cria um novo objeto 20, a passa a referenciá-lo
print(id(a), id(b)) # Id diferente, b ainda referencia 10

# Objeto mutável (lista)
list1 = [1, 2, 3]
list2 = list1 # list1 e list2 referenciam a mesma lista
print(id(list1), id(list2)) # Mesmo id

list1.append(4) # Modifica o objeto referenciado por ambos
print(list1)
print(list2) # Ambas as listas são modificadas
print(id(list1), id(list2)) # Ainda o mesmo id

O mecanismo de contagem de referências é usado para gerir automaticamente a memória. Cada objeto rastreia a quantidade de variáveis que o referenciam. Quando essa contagem chega a zero, o objeto torna-se inacessível, e o recolhedor de lixo liberta a memória que ocupa.

Uma diferença importante em relação às linguagens com armazenamento direto de valores em variáveis (por exemplo, C): em Python, ao fazer b = a, o valor de a não é copiado para b, mas b começa a referenciar o mesmo objeto que a.