튜플 언패킹은 「튜플·리스트의 요소를 여러 변수에 한 번에 할당」하는 매우 편리한 문법입니다.
코드를 짧고 읽기 쉽게 만들어 줍니다.
기본 형식.
point = (3, 4); x, y = point — x는 3, y는 4.
변수 개수가 요소 개수와 같아야 합니다.
함수의 다중 반환과 자연스럽게 결합 — def get_size(): return 1920, 1080.
width, height = get_size().
*로 「나머지 모두」를 받을 수 있습니다.
first, *rest = [1, 2, 3, 4, 5] — first=1, rest=[2,3,4,5].
*init, last = [1,2,3,4,5] — init=[1,2,3,4], last=5.
first, *middle, last = [1,2,3,4,5] — first=1, middle=[2,3], last=5.
매우 영리한 분리 패턴.
유명한 영리한 트릭: 변수 두 개의 값 교환.
a, b = b, a — 임시 변수 없이 한 줄로.
다른 언어가 「temp = a; a = b; b = temp」를 쓰는 일을 한 줄로 끝냅니다.
함수 호출에서도 *로 「리스트를 풀어 인자로」 넘길 수 있습니다.
args = [1, 2, 3]; print(*args) — print(1, 2, 3)와 같음.
**dict로 딕셔너리를 키워드 인자로 풀 수도 있습니다 — print(**{"sep": "-"})은 print(sep="-")와 같습니다.
한 줄 요약
튜플 언패킹은 x, y = point 같은 동시 할당이며, *로 나머지를 받고, a, b = b, a로 값 교환을 한 줄에 합니다.
*args·**kwargs로 함수 호출에 풀어 넘길 수도 있습니다.
더 알아볼 것
- 함수 정의의 *args, **kwargs
- Walrus operator (:=)
- Python 3.10+ match-case 패턴 매칭