Видеокурс выложен на сайте Altube.ru вместо Youtube и плеер Altube не поддерживает субтитры. Прошу решить вопрос о предоставлении русских субтитров в этом англоязычном видеокурсе. |
Кортежи (tuples)
20.3. Присваивание кортежей
Одной из особенностей синтаксиса языка Питон является возможность размещать кортеж слева от оператора присваивания. Это позволяет за один раз присваивать значение более чем одной переменной.
В примере мы используем двухэлементный список (который представляет собой последовательность) и присваиваем первый и второй его элементы переменным х и у в одном операторе присваивания.
>>> m = ( 'have', 'fun' ) >>> x, y = m >>> x 'have' >>> y 'fun' >>>
Здесь нет ничего загадочного, Питон просто преобразует синтаксис присвоения кортежа в следующий код2Питон не воспринимает синтаксис буквально. Например, если попытаться выполнить команду для словаря, она не будет работать.:
>>> m = ( 'have', 'fun' ) >>> x = m[0] >>> y = m[1] >>> x 'have' >>> y 'fun' >>>
Стилистически, когда кортеж ставится с левой стороны оператора присваивания, скобки обычно опускаются, но следующий код в той же степени допустим:
>>> m = ( 'have', 'fun' ) >>> (x, y) = m >>> x 'have' >>> y 'fun' >>>
Хитроумное использование присваивания кортежей позволяет нам поменять местами значения двух переменных в одном операторе:
>>> a, b = b, a
Обе части этого оператора – кортежи, но слева – кортеж переменных, а справа – кортеж выражений. Каждое значение справа присваивается соответствующей переменной слева. Все выражения справа вычисляются до любых присваиваний.
Количество переменных слева должно быть равно количеству значений справа:
>>> a, b = 1, 2, 3 ValueError: too many values to unpack (Ошибка Значений: слишком много значений для распаковки)
В общем случае справа может быть любой тип последовательности (строка, список или кортеж). Например, чтобы разделить электронный адрес на имя пользователя и название домена, можно использовать фрагмент кода:
>>> addr = 'monty@python.org' >>> uname, domain = addr.split('@')
Возвращаемое значение метода split является списком из двух элементов; первый элемент присваивается переменной uname, второй — переменной domain.
>>> print uname monty >>> print domain python.org