Виды присвоений значений переменным в python, в чем разница?

a, b = 5,7
a, b = b,a

print(a ,b) #7 5

Почему b не стало равно 7, если a уже равно 7?

Другой блок:

a, b = 5, 7
a = b
b = a

print(a, b) #7 7

Ответы (2 шт):

Автор решения: Imas

В первом блоке кода, после замены a и b, значение a становится равным 7, а значение b становится равным 5. Это связано с тем, что замена переменных происходит одновременно, поэтому значение "b" сохраняется в "a" до того, как "a" присваивается "b"..

Во втором блоке кода, после установки a=5 и b=7, строка 'a=b' устанавливает значение a равным 7. Затем 'b=a' также устанавливает значение b равным 7. Таким образом, и a, и b становятся 7.

→ Ссылка
Автор решения: wchistow

Код

a, b = b, a

эквивалентен не такому коду:

a = b
b = a

а такому:

c = b
b = a
a = c

То есть переменные просто меняются местами: a становиться равным b, а b - прошлому значению a.


А во втором примере вы сначала записываете в переменную a значение переменной b, а потом в b - то, что оказалось в a, т. е. тоже b.

a = b
b = a
→ Ссылка