Cómo funcionan las variables en Python
En Python las variables funcionan como etiquetas, labels, y no son como muchos piensas cajas, boxes. De hecho al crear una variable a con los numeros del 0 al 5, el contenido referenciado puede compartirse con otra variable b. Y si modifico b se modifica a y si modifico a se modifica b. Esto quiere decir que no hay "un dueño" del contenido, sino que las variables a y b funcionan como etiquetas para referenciar un contenido específico.
>>> a = range(5)
>>> b = a
>>> a.append(9)
>>> b
[0, 1, 2, 3, 4, 9]
En este sentido, a y b no solo tienen lo mismo, sino que hacen referencia a lo mismo.
>>> b == a
True
>>> b is a
True
Un dato al margen: la comparación "a == b" es un syntactic sugar para a.__eq__(b) .
>>> a.__eq__(b)
True
>>> id(a) == id(b)
True
En resumen, en Python es importante diferenciar el nombre de una variable del objeto al que hace referencia. Quizás deberíamos dejar de usar la expresión "cuál es el contenido de esa variable" por un "a qué hace referencia esa variable".