a = b = ['a', 'b']
b = ['x', 'y'] # reassigns the name b
print a # still the original list
a = b = ['a', 'b']
b[:] = ['x', 'y'] # changes the existing list bound to a
print a # a changed too
How come a is linked to b? What kind of mechanism does python use to handle chained assignments of mutable data types?