Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 复合赋值算子问题_Python 3.x - Fatal编程技术网

Python 3.x 复合赋值算子问题

Python 3.x 复合赋值算子问题,python-3.x,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呢?a=a/2*b是a=6/2*3,遵循“正常”的数学规则 另一方面, a/=2*b是a=6/2*3,因为必须首先计算右侧,这实际上成为a/=6->a=a/6 为什么必须首

我一直在做这个练习,因为如果我用快捷操作符写,结果是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呢?

a=a/2*b是a=6/2*3,遵循“正常”的数学规则

另一方面,

a/=2*b是a=6/2*3,因为必须首先计算右侧,这实际上成为a/=6->a=a/6

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


关于编辑:当比较a*=2/b和a=a*2/b时,会发生完全相同的行为。不同之处在于,在本例中,a在两种情况下都是4,因为6*2/3和6*2/3的计算结果都是4。

为什么必须首先计算右侧?如果我尝试使用带有*=的表达式,则所有操作都有效great@MC我也觉得一切都很好。碰巧6*2*3等于6*2*3,我不是说6*2/3,反正我读到求幂操作符使用了右边绑定。另一个left@MC这里没有求幂运算符,*是乘法。正因为如此,我不明白为什么我需要先执行乘法!右倾