Simple code
c=[1]
print (c is [1])
#return false while if c = 1 integer then it would be true
I check the id then turn out
print(id([1]))
print(id([2]))
print(id([1,2,3]))
print(id(c))
#2523446278656 same id but diffrent from id(c)
#2523446278656 same id
#2523446278656 same id
#2523446278848
All the freaking lists values have the same id?? (now I understand that each time I call the print function the id is reset)
And when I just add a simple code
d=c[:]
All the id MAGICALLY CHANGE except id(c), also id(d) is pointed back to the id([1]) above
print(id([1]))
print(id([2]))
print(id([1,2,3]))
print(id(c))
print(id(d))
#2523446278592 diffrent id than aboved
#2523446278592 diffrent id than aboved
#2523446278592 diffrent id than aboved
#2523446278848 the same id as id(c) aboved
#2523446278656 now id(d) is somehow the same with id[1],[1,2],[1,2,3] above
Note that if I just typed 'c[:]' instead of 'd=c[:]' they will still be the same id. Also, my whole code above is on the same script and executed once.
Edit for gaining back asking privileges: Now I understand that there is a Garbage Collector in Python, and every time I assign the value to a variable, the Garbage Collector will come and take the old id, then next time I assign it will use that id again