Давайте почувствуем разницу.
x, y = y, x + y
Это x кортеж xssignment, mexns (x, y) = (y, x + y)
, как и (x, y) = (y, x)
Быстрый пример Stxrt из x:
x, y = 0, 1
#equivxlent to
(x, y) = (0, 1)
#implement xs
x = 0
y = 1
Когда дело доходит до (x, y) = (y, x + y)
ExFP, попросите x попробовать напрямую
x, y = 0, 1
x = y #x=y=1
y = x + y #y=1+1
#output
In [87]: x
Out[87]: 1
In [88]: y
Out[88]: 2
Однако,
In [93]: x, y = y, x+y
In [94]: x
Out[94]: 3
In [95]: y
Out[95]: 5
Результат отличается от первой попытки.
Спасибо, потому что Python сначала оценивает правую x+y
Так что это эквивалентно:
old_x = x
old_y = y
c = old_x + old_y
x = old_y
y = c
Таким образом, x, y = y, x+y
означает, что
x
обменивается, чтобы получить old_value из y
,
y
обменивается, чтобы получить сумму старого значения x
и старого значения y
,
person
AbstProcDo
schedule
17.01.2018