i = i +1 写成 i += 1 有什么好处?

2016-05-08 14:29:07 +08:00
 terence4444
PyCharm 推荐写成后者,这样写跑起来比较快?
17813 次点击
所在节点    Python
50 条回复
est
2016-05-08 15:36:26 +08:00
+= 是个原子操作。 但是 py 估计然并卵。
qqmishi
2016-05-08 15:39:35 +08:00
+和=是同一个键打起来快,,,
xuboying
2016-05-08 15:44:56 +08:00
语言搞这种细节就没意思了
soland
2016-05-08 15:57:00 +08:00
编译有可能不一样。
RitzoneX
2016-05-08 16:26:33 +08:00
试下 i++
latyas
2016-05-08 17:17:44 +08:00
latyas
2016-05-08 17:20:56 +08:00
所以标题应该问:这两个写法有什么区别 会更好一些
MntCw
2016-05-08 18:00:20 +08:00
存储器读一次和读两次的区别
abscon
2016-05-08 18:57:10 +08:00
Python 不是鼓吹只有一种方法做事情么,禁止掉一个吧
Finalcheat
2016-05-08 20:18:45 +08:00
习惯问题吧,没有任何好处。
jacy
2016-05-08 20:22:01 +08:00
后者有 B 格
digimoon
2016-05-08 20:26:34 +08:00
后者我一眼看过去没反应过来是什么东西,可能似乎大概有 B 格
mhoudg
2016-05-08 20:33:01 +08:00
这个步骤的真实意图通常并非做一个加法运算,而是进行自增
i += 1 的写法非常符合 “ i 自增 1 ”这个语言顺序,给人感觉很直观;
而 i = i + 1 的写法会让人第一感受是一个赋值,第二感受是一个假发,相对 += 来说不那么直观

我知道肯定有人会说第二种写法也很直观,而且我不打算讨论什么叫“直观”这个问题
Patiencec
2016-05-08 20:35:13 +08:00
哈哈,打字习惯
chrishine
2016-05-08 20:49:37 +08:00
语法糖层面,如果 i 这个变量名很长,优势就出来了。比如你要给某个结构体的某个字段增加某个值。
性能方面,我觉得编译器应该可以优化掉这种 case.
zhuangzhuang1988
2016-05-08 21:36:49 +08:00
@chrishine 标准 python 解释器 是不会优化的
Joway
2016-05-08 22:11:28 +08:00
以前忘了听谁说的说前者是一个操作,后者是两个,还有那个 ++i 和 i++ 前缀加比后缀加要快。。。然而我觉得这玩意在编译器阶段就已经被优化了,没什么区别。。
Exin
2016-05-08 22:51:06 +08:00
可以给自己续一秒
abcdabcd987
2016-05-08 23:10:47 +08:00
刚写完一个编译器,看到这个问题简直泪流满面。比如下面这个句子:
a[i][j][k] = a[i][j][k] + 1

a[i][j][k] += 1
两句话翻译出来指令数差了好多啊 T_T
glennq
2016-05-09 00:31:36 +08:00
前者等价于 i = i.__add__(1),后者等价于 i.__iadd__(1),对于 int 这种不可变对象是没太大区别,但在可变对象的情况下不仅效率可能有较大差别,实际产生的效果也不一样。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/277115

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX