Вы можете проверить байт-код, чтобы убедиться, что левая сторона вычисляется первой:
dis.dis("""(a - b) + (c * d)""")
1 0 LOAD_NAME 0 (a)
2 LOAD_NAME 1 (b)
4 BINARY_SUBTRACT
6 LOAD_NAME 2 (c)
8 LOAD_NAME 3 (d)
10 BINARY_MULTIPLY
12 BINARY_ADD
14 RETURN_VALUE
Порядок вычисления выражений является частью спецификации языка.
Python вычисляет выражения слева направо. Обратите внимание, что при оценке присваивания правая часть вычисляется перед левой частью.
Обратите внимание, что если вы используете литеральное выражение, такое как (3 - 7) + (3 * 4)
, оно не оценивается, но напрямую компилируется.
dis.dis("""(3 - 7) + (3 * 4)""")
1 0 LOAD_CONST 0 (8)
2 RETURN_VALUE