12.2 튜플 할당
두 변수의 값을 교환하는 건 종종 유용하다. 일반적인 할당문으로는 임시 변수를 사용해야 한다. 예를 들어 a와 b를 교환하려면 다음과 같은 코드를 사용한다.
>>> temp = a
>>> a = b
>>> b = temp
이런 방법은 번거롭다. 튜플 할당(tuple assignment)은 좀 더 우아하다.
>>> 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에 할당된다.
>>> uname
'monty'
>>> domain
'python.org'