Линия:
a, b = b, a + b
ближе к:
temp_a = a
a = b
b = temp_a + b
, где b
использует старое значение для a
до a
было переназначено значение b
.
Python сначала оценивает правое выражение и сохраняет результаты в стеке, затем берет эти два значения и назначает их a
и b
. Это означает, что a + b
вычисляется до a
.
См. Как происходит замена членов в кортежах python (a, b) = (b , а) работать внутри? для низкого уровня, как все это работает, на уровне байт-кода.