我知道 Python 遵循缩写 PEMDAS 或 P-E-MD-AS 的运算符优先级
现在Python碰巧使用快捷操作符,例如如果我要写
x=5
x=x+1
这可以重写为
x+=1
现在,当我更进一步并尝试进行多个操作时,我注意到一些奇怪的事情,例如
x=6
y=2
x=x/2*3
从左向右 x 变为 9.0
如果我尝试用快捷语法重写上面的内容,我会得到以下内容
x/=2*3
但这结果是 1.0
右侧的乘法似乎发生在除法快捷运算符之前?我以为我们会从左到右工作,所以我很困惑这是如何工作的
情况总是如此吗?如果是这样,为什么会这样?
您无法使用
x=x/2*3
运算符重写 op=
。原因是 x op= y
(大部分)等同于 x = x op y
。但就您而言,您有 x=x/2*3
,它们分组为 x=(x/2)*3
。它没有 x = x op y
的形式。右侧的顶级运算符是 *
,左侧操作数是 x/2
,而不是 x
。你能做的最好的事情就是把它分成两个语句:x /= 2
,然后是x *= 3
,但我认为这不会改善任何事情。