Android Studio: «При установке SDK не установлено« Дополнения> Репозиторий поддержки Android », НО ЭТО БЫЛО УСТАНОВЛЕНО

Давайте заглянем.

a, b = b, a + b

Это назначение кортежа, означает (a, b) = (b, a + b), как (a, b) = (b, a)

Начните с быстрого примера:

a, b = 0, 1
#equivalent to
(a, b) = (0, 1)
#implement as
a = 0
b = 1

Когда приходит к (a, b) = (b, a + b) EAFP, попробуйте прямо

a, b = 0, 1
a = b #a=b=1
b = a + b #b=1+1
#output
In [87]: a
Out[87]: 1
In [88]: b
Out[88]: 2

Однако

In [93]: a, b = b, a+b
In [94]: a
Out[94]: 3
In [95]: b
Out[95]: 5

Результат отличается от первой попытки.

Tha, потому что Python сначала оценивает правую a+b. Это эквивалентно:

old_a = a
old_b = b
c = old_a + old_b
a = old_b
b = c

Таким образом, a, b = b, a+b означает, что a обменивается, чтобы получить old_value из b, b, чтобы получить сумму старого значения a и старое значение b,

16
задан Yoda 15 May 2014 в 16:06
поделиться