找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3492|回复: 2

为什么a+=b比a=a+b效率高

1

主题

1

帖子

9

积分

贫民

积分
9
sublime 发表于 2015-7-2 14:12:20 | 显示全部楼层 |阅读模式
本人是新手,高手不喜欢这种问题别骂,我只想知道在处理过程是怎么样的

python中,如:
创建变量a和b,并赋值
a=1
b=2
那么这个过程是不是,先在内存中先创建两个房间(这个地方叫什么呢,其实我不太懂,求高手指点下):房间1保存1的值,房间2保存2的值,然后再把房间1和房间2这两个房间(是叫对象吗)的地址赋值给a和b,也就是说a,b实际上不是等于1和2,而是指向了1,2保存的地址,这应该就是书上就的对象引用 与对象吧,如果关于上面我解理的不对,请高手一定要指正我,回复我,我只是个未知欲比较强的新手~~~啊里嘎多~~~

那么问题来了,为什么a+=b有时比a=a+b效率高,其实我对这两个语句的执行与处理过程不是太懂

大概执行与处理过程是这样的?(其实我一点都不清楚这个过程,我只是写出我的理解,这个真的要高手来回答我~~一定要回答哇)
1.a+=b的过程:
首先,这个语句的意思实际上是把a+b值相加再赋值给a,那么a+=b的过程是怎么处理的?
是不是先去房间1取a对象的值=1,然后再去房间2取b对象的值=2,然后让他们相加,得出的新的值=3,然后把3这个值保存到原来房间1的地方,并覆盖了房间1原来保存的1值?(乱了),还是把新的值=3,直接使用一个新地方(房间3)保存值3,再把房间3的地址赋值给a?

2.a=a+b的过程
首先是不是先去房间1取a对象的值=1,然后再去房间2取b对象的值=2,然后让他们相加,得出的新的值=3,并把新值3,保存到房间3,然后把房间3的地址赋值给a

个人的理解是以上这样的,按我的理解,两个语句的处理过程是一样的,为什么a+=b比a=a+b的效率高?我是真心不太懂,
还有,书上说的,a+=b实际上是只取了一次a的值,而a=a+b取了多次a的值(到底是几次,我也没搞懂),真心希望高手能详细点回复下这两个语句的处理过程,这将影响我今后的学习,谢谢,一定要详细点说出他们的处理过程~~~

回复

使用道具 举报

0

主题

2

帖子

2

积分

贫民

积分
2
tigfish 发表于 2015-7-19 08:53:34 | 显示全部楼层
楼主这种求甚解的精神很值得我们学习
回复 支持 反对

使用道具 举报

0

主题

23

帖子

23

积分

贫民

积分
23
关大叔 发表于 2015-8-4 14:32:15 | 显示全部楼层
只是多了一个赋值操作而已
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表