首页 > 编程语言 > 详细

Python中的"i += X"与“i = i + X”的区别

时间:2015-10-15 13:06:23      阅读:191      评论:0      收藏:0      [点我收藏+]

请问,什么情况下 "i += x" 不等于 "i = i + x"?

 技术分享 

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这句话都是l1l2代表同一个内存地址,也就是他们之间是完全一致的。

Python中的"i += X"与“i = i + X”的区别

原文:http://my.oschina.net/dfsj66011/blog/517422

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!