问题: python中x+=y和x=x+y的区别是什么? 解答: 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方法。
|