参考https://blog.csdn.net/AI414010/article/details/116240619
1、对于不可变对象而言,没有区别,不论是x+=y还是x=x+y,新的x值都是保存在新的内存中,与原x不同。
2、对于可变对象而言,x=x+y产生的新的x保存在新的内存中,而x+=y是原地操作。另外对于列表而言,原地操作也可以使用x[:]=x+y,这意味着将原来x中的每个元素值改变,而不改变x的内存地址。
原因:
+调用的是add方法,add方法会将相加之后的值赋值给新变量。
+=调用的是iadd方法,iadd方法会进行原地操作。不可变类型的变量的+=不进行原地操作的原因是不可变类型是没有iadd方法的,因此会重载add方法。
小心大的矩阵过度复制造成内存消耗