Шаг 14.
Основы языка Python.
Переменные. Присваивание значения переменным (окончание)

    На этом шаге мы рассмотрим позиционное присваивание.

    Помимо группового присваивания, язык Python поддерживает позиционное присваивание. В этом случае переменные указываются через запятую слева от оператора =, а значения - через запятую справа. Пример позиционного присваивания:

>>> x, y, z = 1, 2, 3
>>> x, y, z
(1, 2, 3)

    С помощью позиционного присваивания можно поменять значения переменных местами. Пример:

>>> x, y = 1, 2; x, y
(1, 2)
>>> x, y = y, x; x, y
(2, 1)

    По обе стороны оператора = могут быть указаны последовательности. Напомним, что к последовательностям относятся строки, списки, кортежи, диапазоны, типы bytes и bytearray. Пример:

>>> x, y, z = '123' # Строка
>>> x, y, z
('1', '2', '3')
>>> x, y, z = [1, 2, 3] # Список
>>> x, y, z
(1, 2, 3)
>>> x, y, z = (1, 2, 3) # Кортеж
>>> x, y, z
(1, 2, 3)
>>> [x, y, z] = (1, 2, 3) # Список слева, кортеж справа
>>> x, y, z
(1, 2, 3)

    Обратите внимание на то, что количество элементов справа и слева от оператора = должно совпадать, иначе будет выведено сообщение об ошибке:

>>> x, y, z = (1, 2, 3, 4)
Traceback (most recent call last):
  File "<pyshell#50>", line 1, in <module>
    x, y, z = (1, 2, 3, 4)
ValueError: too many values to unpack (expected 3)

    Python 3 при несоответствии количества элементов справа и слева от оператора = позволяет сохранить в переменной список, состоящий из лишних элементов. Для этого перед именем переменной указывается звездочка (*). Пример:

>>> x, y, *z = (1, 2, 3, 4)
>>> x, y, z
(1, 2, [3, 4])
>>> x, *y, z = (1, 2, 3, 4)
>>> x, y, z
(1, [2, 3], 4)
>>> *x, y, z = (1, 2, 3, 4)
>>> x, y, z
([1, 2], 3, 4)
>>> x, y, *z = (1, 2, 3)
>>> x, y, z
(1, 2, [3])
>>> x, y, *z = (1, 2)
>>> x, y, z
(1, 2, [])

    Как видно из примера, переменная, перед которой указана звездочка, всегда содержит список. Если для этой переменной не хватило значений, то ей присваивается пустой список. Следует помнить, что звездочку можно указать только перед одной переменной. В противном случае возникнет неоднозначность и интерпретатор выведет сообщение об ошибке:

>>> *x, y, *z = (1, 2, 3, 4)
SyntaxError: two starred expressions in assignment

    На следующем шаге мы рассмотрим проверку типа данных.




Предыдущий шаг Содержание Следующий шаг