Giordano Toscano
Giordano Toscano03/08/2023 08:37
Compartilhe

Resumo rápido sobre armazenamento de dados na memória (Resposta para dúvida de fórum)

  • #Python

Link para pergunta: bootcamp-iFood-forum-duvida

Essa questão de armazenamento de valores e objetos em memória é uma assunto não trivial e que depende muito da linguagem que estamos falando. Vou tentar te explicar de uma maneira bem genérica para fornecer uma base de entendimento. Dessa forma, você terá um ponto de partida se decidir ler mais sobre o assunto no futuro.

WARNING: já peço desculpas pelos desenhos feios, mas vou desenhar tudo no Paint por questão de praticidade, ok ? rsrsrs

Primeiro vamos imaginar que a memória é uma fita (como desenhada abaixo) com vários "espacinhos". Vamos dizer que eu inicializo uma variável da seguinte forma:

var1 = 12

Isso quer dizer que nós temos:

image

Perceba o que foi feito: eu estou dizendo que esse espacinho da memória vai ser chamado de var1 e irá armazenar o valor 12. Ao inicializar outra variável teríamos:

var2 = 63

image

Ou seja, eu estou dizendo que esse outro espacinho da memória vai ser chamado de var2 e irá armazenar o valor 63. Até aqui tudo bem, né ? Até agora os exemplos foram para variáveis de tipos simples/primitivos (como inteiros, floats, booleanos, etc). Pois bem, agora veja o que acontece ao inicializar a seguinte variável:

var3 = "Carro"

image

Mas então o que aconteceu ? Essa código 0x2a56e é um endereço. Então, eis o que houve: eu estou dizendo que esse outro espacinho da memória vai ser chamado de var3 e irá armazenar um endereço para um objeto ( a string "Carro"). Esse objeto está armazenado em outra parte da memória. Portanto, a variável var3 armazena um endereço que indica a localização do objeto na memória. Esquematizando visualmente:

image

Com todo esse cenário em mente, agora vamos falar sobre sua pergunta especificamente. O que seria esse caso de "mesma região de memória" ? Como nós vimos agora pouco, uma variável pode conter uma referência para um objeto. O que acontece é que as vezes duas variáveis diferentes podem armazenar o mesmo endereço para o mesmo objeto ! Mas como seria isso ? vamos supor que, junto com nossa variável var3, eu inicialize uma nova variável:

var3 = "Carro"
tipo_veiculo = "Carro"

Dessa forma, é possível que a linguagem que você está programando faça com que as variáveis var3 e tipo_veiculo armazenem o mesmo endereço para o objeto "Carro", ou não !. Por isso que eu falei no início que esse tipo de decisão varia de linguagem para linguagem. Cada linguagem possui suas "políticas" de como organizar e do que consideram como objetos ou não. Mas enfim, dado o cenário que apresentei, é possível que uma linguagem trate dessa forma:

image

Por sinal, acredito que Python trata esse caso dessa forma também !

Para concluir: o professor estava explicando que os operadores is e is not conseguem verificar se duas variáveis possuem o mesmo endereço (se referenciam o mesmo objeto). No exemplo que acabei de descrever, teríamos:

>>> var3 is tipo_veiculo
True

Espero ter ajudado :D

Quem quiser complementar ou quem achar que me equivoquei em alguma parte, é só falar !!

OBS: vou fazer desenhos melhores depois ! fiz esses bem rápidos só para o Alexandre não ficar sem resposta por muito tempo.

Compartilhe
Comentários (0)