^=、-= 和 += 符号

问题描述 投票:0回答:3

我对 Python 很有经验,但最近,当我查看 codility 示例测试的解决方案时,我遇到了运算符

-=
+=
^=
,我无法弄清楚它们的作用。也许有人可以解释一下它们的使用背景吗?

python operators symbols
3个回答
52
投票

与几乎所有现代语言一样,Python 具有 赋值运算符 所以每次你想在进行一些算术或逻辑运算后给变量赋值时,他们都可以使用它们,两者(赋值和运算)都在一个语句中以紧凑的方式表达...

来自教程点

操作员 描述 示例
= 将右侧操作数的值赋给左侧操作数 c = a + b 将 a + b 的值赋给 c
+= 添加 AND 它将右操作数添加到左操作数,并将结果分配给左操作数 c += a 等价于 c = c + a
-= 减去并 从左操作数中减去右操作数,并将结果赋给左操作数 c -= a 等价于 c = c - a
*= 乘以 AND 它将右操作数与左操作数相乘,并将结果赋给左操作数 c *= a 等价于 c = c * a
/= 除与 它将左操作数与右操作数相除,并将结果赋给左操作数 c /= a 等价于 c = c / a
%= 模数与 它使用两个操作数取模并将结果分配给左操作数 c %= a 相当于 c = c % a
**= 指数 AND 对运算符进行指数(幂)计算并将值赋给左操作数 c **= a 相当于 c = c ** a
//=楼层划分 它对运算符执行向下除法并将值分配给左侧操作数 c //= a 相当于 c = c // a

3
投票

当您计算

X = X + Y
时,您实际上是将
X
Y
的总和返回到一个新变量中,在您的示例中,该变量会覆盖
X
的先前值。当您使用
X += 1
形式的赋值运算符时,值
1
会直接与
X
的当前值相加,而不将结果返回到新变量中。看看下面的代码:

>>> V = np.arange(10)
>>> view = V[3:]        # view is just a subspace (reference) of the V array
>>> print(V);print(view)
[0 1 2 3 4 5 6 7 8 9]
[3 4 5 6 7 8 9] 
>>> view = view + 3     # add view to a constant in a new variable 
>>> print(V);print(view)
[0 1 2 3 4 5 6 7 8 9]
[ 6  7  8  9 10 11 12]
>>> view = V[3:]
>>> view += 3           # here you actually modify the value of V
>>> print(V);print(view)
[ 0  1  2  6  7  8  9 10 11 12]
[ 6  7  8  9 10 11 12]

您还可以查找

numpy.ndarray.base
的文档来检查一个数组是否实际上是另一个数组的引用。


0
投票
x += a : x = x + a
x -= a : x = x - a

x ^= a : Python 中不存在 而是使用“=” 在 Python 中,我们使用“”而不是“^”作为幂运算符。

© www.soinside.com 2019 - 2024. All rights reserved.