Python 运算符与快捷运算符的优先级?

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

我知道 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

右侧的乘法似乎发生在除法快捷运算符之前?我以为我们会从左到右工作,所以我很困惑这是如何工作的

情况总是如此吗?如果是这样,为什么会这样?

python shortcut operator-precedence
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
,但我认为这不会改善任何事情。

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