Exercícios Resolvidos de Variáveis

Ver Teoria

Enunciado

Após a execução do código abaixo, responda, justificando adequadamente, quantos objetos e quantas referências foram criadas na memória do computador.

Passo 1

Fala aí! Cara, esse exercício aqui obriga a gente a pensar sobre como funcionam as variáveis em Python por baixo do panos. Você lembra?!

Ah, deixa eu te lembrar: variáveis são espaços na memória que armazenam determinado objeto.

Esse objeto pode ser de qualquer tipo (como inteiro, float, boolean, etc). Depois que esse objeto é criado na memória, ele é referenciado pelo nome que a gente escolheu. Olha essa ilustração de como se parece uma variável na memória do computador:

Nessa ilustração, o círculo é nosso objeto. O retângulo com a seta é a nossa variável fazendo referência ao objeto. Quando a gente cria uma segunda referência com “m = n”, a gente tá criando uma nova referência, mas não um novo objeto.

As duas variáveis apontam pro mesmo valor na memória, ok?! Por isso, a resposta é que a gente tem duas referências, mas apenas um objeto.

Mas calma aí, deixa eu te falar sobre o que acontece quando a gente tenta mudar o valor de uma variável.

Repara que antes, “n” apontava pro objeto de valor 300. Quando a gente faz uma segunda atribuição, a gente NÃO edita o objeto anterior, ok?

O que acontece é que um novo objeto é criado e a sua variável passa a referenciar o novo objeto. Tô te contando isso porque é importante você saber que, diferente de outras linguagens, em Python os valores não são alterados.

Você simplesmente abandona o antigo e cria um novo. Se você fizer m referenciar 100 também, o que acontece é isso:

O objeto em laranja que foi criado primeiro, com 300 dentro, passa a não ser referenciado por ninguém, e por isso é automaticamente deletado pelo coletor de lixo do Python, ok?!

Por último, quero enfatizar m e n estão apontando pro mesmo objeto por causa do “m = n”, mas é possível ter mais de um objeto com valores idênticos, beleza?!

O resultado disso, na memória, é assim:

E, com essa análise, finalizamos mais um exercício!

Resposta

Um objeto e duas referências.