l2 = l1以及l4 = l3是指它们之间的内存地址是一样的,+=是在原对象基础上进行操作的,而i = i + x的形式则是重新创建了一个新的对象。
但是,事情真的这样吗?我们知道列表中,元组是不可变的,如果我们将上面的例子改为元组呢,l2 += (4,5),会报错提示你元组不可变还是自动创建一个新的对象呢?
数字也是不可改变的,
从上面几个实验可以发现,i = i + X的形式,对象i一定不是原来的对象i了,而i += X的形式分为两种,当对象i是不可变类型(比如元组,数值等),对象i也一定不再是原来的对象i,而当对象i是可变对象时,对象i还是原来的对象i。无论什么情况下,l1 = l2这句话都是l1与l2代表同一个内存地址,也就是他们之间是完全一致的。
Python中的"i += X"与“i = i + X”的区别
原文:http://my.oschina.net/dfsj66011/blog/517422