Это относится ко всем типам коллекций. Это просто связано с тем, как python обрабатывает переменные. var1 += var2
- это не то же самое, что и var1 = var1 + var2
с коллекциями. Я объясню это, насколько я понимаю, что, безусловно, может быть улучшено, поэтому любые изменения/критические замечания приветствуются.
print("1:")
x1 = [7]
y1 = x1
y1 += [3]
print("{} {}".format(x1, id(x1)))
print("{} {}".format(y1, id(y1)))
print("2:")
x2 = [7]
y2 = x2
y2 = y2 + [3]
print("{} {}".format(x2, id(x2)))
print("{} {}".format(y2, id(y2)))
Выход:
1:
[7, 3] 40229784 # first id
[7, 3] 40229784 # same id
2:
[7] 40228744 # first id
[7, 3] 40230144 # new id
Высказывание var1 = var1 + var2
создает новый объект с новым идентификатором. Он принимает старое значение, добавляет его ко второй переменной и присваивает его новому объекту с ИМЯ первого объекта. В примере var1 += var2
он просто добавляет его к объекту, на который указывает идентификатор, который аналогичен старой переменной.