В операторе присваивания правая часть всегда оценивается полностью перед , выполняя фактическую настройку переменных. Итак,
x, y = y, x + y
оценивает y
(назовем результат ham
), оценивает x + y
(назовем это spam
), , затем устанавливает x
на ham
и y
до spam
. Т.е. это
ham = y
spam = x + y
x = ham
y = spam
. Напротив,
x = y
y = x + y
устанавливает x
в y
, затем устанавливает y
на x
(который == y
) плюс y
, поэтому он эквивалентен
x = y
y = y + y