In an assignment statement, the right-hand side is always evaluated fully before doing the actual setting of variables. So,
x, y = y, x + y
evaluates y
(let's call the result ham
), evaluates x + y
(call that spam
), then sets x
to ham
and y
to spam
. I.e., it's like
ham = y
spam = x + y
x = ham
y = spam
By contrast,
x = y
y = x + y
sets x
to y
, then sets y
to x
(which == y
) plus y
, so it's equivalent to
x = y
y = y + y
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…