在许多语言中,a = a + b可以写成a + = b
在数值运算的情况下,a + b与b + a相同,因此单个复合运算符就足够了。
同样,a = a-b可以写成a-= b。
但是,a-b不等于b-a。因此,复合赋值运算符不适用于a = b-a
那么,是否存在操作 a = b op和的复合赋值运算符(其中op可以是+,-,*,/,%和顺序很重要)?
[非交换运算]
最佳答案
不,没有。
速记的由来
我怀疑这个缩写来自汇编语言,其中ADD
指令正是这样做的-接受两个操作数,进行加法运算并将其存储到第一个。
我会说人们习惯于这样思考,因此这种模式也以a += b
的简写形式出现在C语言中。其他语言是从C那里获得的。
我认为没有特别的理由要不拥有a = a + b
或a = b + a
。我认为在编程中不需要经常使用这两种方法。原因是历史性的。与我们使用QWERTY键盘布局而不使用其他布局的原因相同。
更新:See this,这是一个神话,因为C基于B语言而不是来自汇编语言。来历不明确。
可能的原因
+=
比较时很少使用。 +=
这种操作,而不是a = b + a
,因此他们可以接受这样的事实,因为它不存在速记,也没有要求。 可能的解决方案
最好的解决方案是只编写
a = b + a
,因为乍一看它清晰易读。由于相同的原因(可读性)(更新:who knows?),Python不提供从C语言和其他语言已知的a++
。您必须输入a += 1
。 +=
速记法对于编程初学者来说也不是很容易理解,但是仍然可以以某种方式至少猜出这是怎么回事。它是传统,懒惰和可读性之间的折衷。如果没有传统,那么可读性至少应该在Python中获胜。因此,一个人应该清楚地写一些字符,而不是寻找一个简写形式。
a = b + a
就是这种情况。笔记
如果要串联更多的字符串,则应注意
.join()
以提高性能。
关于programming-languages - 是否有a = b <operator> a的复合赋值运算符(其中<operator>不是可交换的)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13348261/