复合赋值运算符的问题

时间:2019-08-19 21:59:13

标签: python-3.x

我坚持此练习,因为如果我使用快捷键运算符编写结果为1,则结果为9

    a = 6
    b = 3
    a /= 2 * b
    print(a)

a = a / 2 * b [结果9] a / = 2 * b [结果1]

但是,如果我使用*并在/之后进行此练习,则像这样:

    a *= 2 / b

为什么在这种情况下他们不先做(2 / b)?

1 个答案:

答案 0 :(得分:1)

>> [position,orient ] = pose(FUSE); a = a / 2 * b(遵循“普通”数学PEMDAS规则)。

另一方面

a = 6 / 2 * 3a /= 2 * b(由于必须首先评估右侧,因此实际上变成a = 6 / (2 * 3)-> a /= 6

为什么必须首先评估右侧?因为语句a = a / 6没有意义。

关于您的编辑:比较(a = 6 / 2) * 3a *= 2 / b时会发生完全相同的行为。区别在于,在此示例中,a = a * 2 / b在两种情况下均为4,因为a
(6 * 2) / 3的求和结果均为4。