Множественное присваивание
В языке Python за одну инструкцию присваивания можно задавать значения сразу нескольким переменным. Делается это так:
name, surname = 'Timur', 'Guev'
print('Имя:', name, 'Фамилия:', surname)
Этот код можно записать и так:
name = 'Timur'
surname = 'Guev'
print('Имя:', name, 'Фамилия:', surname)
Отличие двух способов состоит в том, что множественное присваивание в первом способе присваивает значения двум переменным одновременно.
Если требуется считать текст с клавиатуры и присвоить его в качестве значения переменным, то можно написать так:
name, surname = input(), input()
print('Имя:', name, 'Фамилия:', surname)
Если слева от знака =
в множественном присваивании должны стоять через запятую имена переменных, то справа могут стоять произвольные выражения, разделенные запятыми. Главное, чтобы слева и справа от знака присваивания было одинаковое число элементов.
Множественное присваивание удобно использовать, когда нужно обменять значения двух переменных. В Python это делается так:
name1 = 'Timur'
name2 = 'Gvido'
name1, name2 = name2, name1
Обратите внимание, что для обмена значений переменных следующий вариант не сработает:
name1 = 'Timur'
name2 = 'Gvido'
name1 = name2
name2 = name1
Дело в том, что инструкция name1 = name2
полностью стирает старое значение переменной name1
. Когда мы в инструкции name2 = name1
присваиваем для переменной name2
значение переменной name1
, этим значением уже не является строка 'Timur'
, этим значением уже является строка 'Gvido'
.
Примечания
Примечание 1. Названия переменных ничего не говорят интерпретатору о значениях в этих переменных, и даже в очень хорошо названной переменной не появится нужное значение, если мы сами его туда не запишем.
Примечание 2. Новое значение переменной вытесняет старое. Важно представлять, чему равно значение переменной в каждый момент времени.
Примечание 3. В качестве названия переменных запрещено использовать ключевые (зарезервированные) слова. К ключевым словам в языке Python относятся:
- False;
- True;
- None;
- and;
- with;
- as;
- assert;
- break;
- class;
- continue;
- def;
- del;
- elif;
- else;
- except;
- finally;
- try;
- for;
- from;
- global;
- if;
- import;
- in;
- is;
- lambda;
- nonlocal;
- not;
- or;
- pass;
- raise;
- return;
- while;
- yield.