Fala Luiz, não sei se entendi sua pergunta e também não conheço muito a fundo o funcionamento de Python.
Vou tentar responder, caso esteja equivocado a galera da lista pode me corrigir.
O início deste post pode te ajudar:
https://pythonhelp.wordpress.com/2013/02/20/variaveis-valores-e-referencias/Quando você cria uma variável do tipo int, você só está criando um nome para acessar um objeto int. Este objeto terá o mesmo id enquanto estiver na memória.
Fiz uns testes no terminal para exemplificar: Durante a execução o inteiro "10" permaneceu com id "17375360" e o inteiro "20" com id "17375120".
In [1]: aa = 10
In [2]: id(aa)
Out[2]: 17375360
In [3]: bb = 10
In [4]: id(bb)
Out[4]: 17375360
In [5]: aa = 20
In [6]: id(aa)
Out[6]: 17375120
In [7]: aa = 10
In [8]: id(aa)
Out[8]: 17375360
In [9]: id(20)
Out[9]: 17375120
In [10]: id(10)
Out[10]: 17375360
Essas referências irão mudar quando o Python tirá-los da memória, mas acho que isso não vai acontecer enquanto você estiver usando o objeto e tiver memória suficiente para mantê-lo.
Quando Python tira um objeto de memória vai depender da implementação do garbage collector, estes dois links podem te dar uma ideia do funcionamento.
https://www.quora.com/How-does-garbage-collection-in-Python-workhttp://effbot.org/pyfaq/how-does-python-manage-memory.htm