1
resposta

Por que não é usado a função id() ?

Acredito que se fosse usado a função id(), ficaria ainda mais claro essa parte de mundança de referencia. Já que podemos ilustrar de forma acertiva que as diferentes variaveis partilham, ou não, do mesmo local de memoria!

1 resposta

Olá Vitor! Tudo certo? Espero que sim. 🙂

Primeiramente, peço desculpas pelo atraso no retorno.

Ótima sugestão!

A função id() pode sim ser útil quando estamos analisando variáveis. Porém, quando falamos de objetos, a coisa é um pouco diferente.

Observe o seguinte código:

In [2]: conta = Conta(123, "Bruno", 100, 1000)                                  
Construindo objeto ... <__main__.Conta object at 0x7feef4bd0dc0>

In [3]: id(conta)                                                               
Out[3]: 140664284974528

In [4]: conta = Conta(321, "Lucas", 50, 2000)                                   
Construindo objeto ... <__main__.Conta object at 0x7feef5c5b520>

In [5]: id(conta)                                                               
Out[5]: 140664302318880

Esse trecho de código nos mostra algumas questões:

  • Primeiramente, como já abordado no curso, quando associamos uma mesma variável para referênciar a dois objetos, apenas o último objeto refênciado permanece com a referência, enquanto o primeiro é perdido e, posteriormente, "limpo" pelo Coletor de lixo .

  • Outra questão é que após criarmos um objeto, temos uma informação indicando o espaço de mémoria onde o objeto está alocado: <__main__.Conta object at 0x7feef4bd0dc0>, sendo "0x7feef4bd0dc0" o endereço de memória. Perceba que esse endereço é diferente do endereço visto quando usamos a função id() na variável. Isso acontece porque o endereço da variável que referência o objeto é diferente do endereço do objeto.

Quando estamos usando a função id() para comparar os endereços de variáveis que referênciam uma à outra, podemos perceber com o código a seguir, que as duas variáveis, de fato, apresentam o memso endereço de memória.

In [5]: id(conta)                                                               
Out[5]: 140664302318880

In [6]: outraRef = conta                                                        

In [7]: id(outraRef)                                                            
Out[7]: 140664302318880

Espero ter ajudado! Quaisquer dúvidas, estou à disposição. 😉

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!