Nie wiem czy zrozumiałeś to co wcześniej pisaliśmy
liczba = 300
liczba1 = 300
id(liczba)
#140681923420816
id(liczba1)
#140681923421040
liczba1 = liczba
id(liczba1)
#140681923420816
Nie wiem czy dobrze zrozumiałem. Z twojego kodu wynika, ze po po takim przypisaniu:
liczba = 300
liczba1 = 300
Tworzone są dwa różne obiekty, wskazuje na to różna wartość zwracana przez funkcję id:
#140681923420816 dla liczba
#140681923421040 dla liczba1
Po przypisaniu wartości liczba do liczba1 , nie jest tworzony nowy obiekt tylko referencja do już istniejącego obiektu liczba.
id(liczba1)
#140681923420816
Taka jest optymalizacja integerów, dla liczb od -5 do 256:
The current implementation keeps an array of integer objects for all integers between -5 and 256, when you create an int in that range you actually just get back a reference to the existing object.
U mnie w PyScripter otrzymuje coś takiego:
liczba=300
liczba1=300
print(id(liczba))
print(id(liczba1))
liczba1=liczba
print(id (liczba1))
1629399437616
1629399437616
1629399437616
Czyli nie są tworzone dwa obiekty, tylko jeden. Jest na to jakieś wytłumaczenie?
Pozdrawiam :)