Python中给切片赋值

提问:
a = a + n和 a += n竟然有区别,能深入讲一讲吗?
from copy import deepcopy
a = [1, 2, 3]
c = deepcopy(a)
b = a
a = a + [4, 5, 6]
print(f"{a = }")
print(f"{b = }")
d = c
c += [4, 5, 6]
print(f"{c = }")
print(f"{d = }")
因为a这个列表是可变类型的对象,改变了ac,按理说同一引用的bd会跟着改变,为什么会有区别,+=等同extend的效果,而 +不是。是否跟内置的魔术方法__add__有关系