2013-04-03 5 views
0

В чем разница между этим:Понимание нескольких заданий в Python

a, b = b, a+b 

И это:

a = b 
b = a+b 

Я пытаюсь следовать в примерах в документации и первой формы (множественный синтаксис присваивания) мне кажется сложным. Я попытался упростить его со вторым примером, но он не дает одинаковых результатов. Я четко интерпретирую первое утверждение неправильно. Что мне не хватает?

ответ

5

Многократное назначение оценивает значения всех на правую руку перед тем изменения любого из значений левой стороны.

Другими словами, разница заключается в следующем:

a = 1 
b = 2 
a = b     # a = 2 
b = a + b    # b = 2 + 2 

против этого:

a = 1 
b = 2 
a, b = b, a + b  # a, b = 2, 1 + 2 

Другой способ думать об этом, что это эквивалентно построению кортеж и затем деконструировать его снова (что фактически является тем, что происходит, за исключением без явного промежуточного кортежа):

a = 1 
b = 2 
_tuple = (b, a+b) 
a = _tuple[0] 
b = _tuple[1] 
+0

Возможно, вы проиллюстрируете свой второй пример с использованием переменной 'tmp' – jamylak

+0

@jamylak Вот что такое' _tuple'. – Amber

Смежные вопросы