本人是新手,高手不喜欢这种问题别骂,我只想知道在处理过程是怎么样的
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的值(到底是几次,我也没搞懂),真心希望高手能详细点回复下这两个语句的处理过程,这将影响我今后的学习,谢谢,一定要详细点说出他们的处理过程~~~
我怎么觉得效率一样呢
无聊.先不说这个要看编译器.
就算真要纠结这些事儿,直接去学汇编就好了
这个a+=b 就等价于a=a+b,就好像是一个字他有不同的写法,有繁体字、简体字,就笔画不同而已
我觉得一编译,就一样了。
进行编译的时候 a+=b 只处理了4个字符,a=a+b处理了5个。哈哈哈…
神回复。 屌!
@问天何必: 建议还是混淆一下,这样所有变量都会变成这个样子的。
编码的时候,注意程序在主要操作上效率就可以了,如果这一句也要纠结,写代码就很困难了。
看这个了:
http://www.zhihu.com/question/27616495
python 的 a += b 和 a = a + b 运算不是完全等价,第一个是自增,即对 a 原引用的对象增加值;第二个则是先相加,创建了一个值位 a + b 的对象,引用到 a.