Python: dois objetos são os mesmos [duplicados]

Duplicata Possível:
Atribuição de objetos e tipos fundamentais

a = [1,2,3]
b = a
print b is a

Este código imprime True. Por quê? "is" só retorna True se as duas variáveis ​​apontarem para o mesmo objeto, quando neste caso são objetos diferentes com o mesmo valor. "==" retornaria True, mas "is" não deveria.

No entanto, desde

b.reverse()
print a,b

imprime [3, 2, 1] [3, 2, 1], parece que, no que diz respeito ao interpretador, eles são o mesmo objeto e as operações em b serão automaticamente executadas em a. Mais uma vez, por quê? Eu nunca vi nada assim acontecer antes.