Python 언패킹과 다중 할당

코딩Python
읽는데 7분 소요
처음 쓰여진 날: 2026-04-07
마지막 수정일: 2026-04-07
조회수: 2

요약

Python의 다중 할당(a, b = 1, 2), 튜플 언패킹, 두 변수 swap, for 루프와 enumerate 언패킹, 함수 반환값 받기, *rest 확장 언패킹까지. 정보처리기사 실기에 자주 등장하는 Python 언패킹 패턴을 정리합니다.

언패킹 핵심 정리

패턴설명예시
다중 할당여러 변수에 여러 값을 한 번에 대입a, b = 1, 2
튜플 언패킹튜플의 각 원소를 변수에 풀어 받기x, y = (10, 20)
swap임시 변수 없이 두 값 교환a, b = b, a
for 루프 언패킹반복문에서 (a, b) 형태 원소를 두 변수로 받기for k, v in items:
enumerate 언패킹인덱스와 값을 동시에 받기for i, x in enumerate(lst):
함수 반환값 언패킹여러 값을 반환하는 함수의 결과를 분리해 받기q, r = divmod(10, 3)
* 확장 언패킹일부는 단일 변수, 나머지는 리스트로 받기head, *rest = [1, 2, 3, 4]

언패킹이란? 쌩기초

언패킹(unpacking)은 "묶여 있는 값들을 풀어서 여러 변수에 한 번에 나눠 담는 것"을 말합니다. Python에서는 = 기호의 왼쪽에 변수를 여러 개 적으면, 오른쪽의 묶음(튜플·리스트 등)이 자동으로 풀려서 각 변수에 차례대로 들어갑니다.

python
코드 하이라이팅 중...

위에서 오른쪽의 10, 20은 사실 (10, 20) 튜플과 동일합니다. Python은 = 오른쪽에 콤마로 값을 나열하면 자동으로 튜플로 묶고, = 왼쪽에 변수를 여러 개 적으면 다시 풀어서 변수에 나눠 담아요.


다중 할당 (multiple assignment) 쌩기초

가장 기본 형태는 = 기호 양쪽에 같은 개수의 항목을 두는 것입니다.

python
코드 하이라이팅 중...

왼쪽 변수의 개수와 오른쪽 값의 개수가 다르면 오류가 납니다.

python
코드 하이라이팅 중...

튜플 언패킹 쌩기초

오른쪽이 명시적인 튜플이어도 동일하게 동작합니다.

python
코드 하이라이팅 중...

리스트도 같은 방식으로 풀어서 받을 수 있습니다.

python
코드 하이라이팅 중...

소괄호 ()나 대괄호 []로 묶인 값이라면 모두 언패킹의 대상이 될 수 있어요. 핵심은 "묶음의 원소 개수"와 "왼쪽 변수의 개수"가 같아야 한다는 것입니다.


두 변수 swap (동시 교환) 기초

다른 언어에서는 두 변수의 값을 바꾸려면 임시 변수를 써야 합니다.

python
코드 하이라이팅 중...

Python에서는 언패킹을 이용해 한 줄로 swap할 수 있습니다.

python
코드 하이라이팅 중...

내부적으로는 오른쪽 b, a가 먼저 (2, 1) 튜플로 묶이고, 그 튜플이 왼쪽의 a, b로 풀려 들어갑니다. 그래서 ab의 값이 동시에 바뀌는 효과가 나요.


for 루프에서 언패킹 기초

for 루프가 매 회차 꺼내는 원소가 묶음(튜플·리스트)이라면, 그 자리에서 바로 풀어 받을 수 있습니다.

python
코드 하이라이팅 중...

위 코드는 다음과 같이 풀어 쓰는 것과 동일합니다.

python
코드 하이라이팅 중...

for num, ch in pairs:라고 쓰면 매 회차 꺼낸 튜플이 자동으로 numch에 풀려 들어가서 코드가 훨씬 짧아집니다.

딕셔너리items() 메서드는 (키, 값) 튜플을 차례로 돌려주므로, for 루프 언패킹과 자주 함께 쓰입니다.

python
코드 하이라이팅 중...

enumerate와 함께 사용 기초

enumerate 함수는 매 회차 (인덱스, 값) 형태의 튜플을 돌려줍니다. 그래서 for 루프에서 언패킹과 거의 항상 함께 사용됩니다.

python
코드 하이라이팅 중...

for index, fruit in enumerate(fruits):에서 index, fruit 부분이 언패킹 자리예요. enumerate가 (0, "사과") 같은 튜플을 만들면, 앞의 0index에, 뒤의 "사과"fruit에 자동으로 들어갑니다.

만약 언패킹을 쓰지 않으면 다음처럼 길어집니다.

python
코드 하이라이팅 중...

언패킹을 사용하면 첫 번째 코드처럼 한 줄로 깔끔하게 쓸 수 있어요.



함수 반환값 언패킹 심화

Python 함수는 콤마로 여러 값을 한 번에 반환할 수 있습니다. 이때 반환값은 자동으로 튜플로 묶여 나가고, 호출하는 쪽에서 언패킹으로 받을 수 있어요.

python
코드 하이라이팅 중...

Python 표준 함수 중에도 두 값을 반환하는 함수가 있습니다. 대표적인 예가 divmod()입니다.

python
코드 하이라이팅 중...

input().split() 결과 언패킹

input()이 돌려준 한 줄짜리 문자열을 split()으로 자르면 리스트가 만들어지고, 이 리스트를 다중 할당으로 여러 변수에 한 번에 받을 수 있습니다. 키보드로 받은 값을 두 변수에 동시에 담는 정형 패턴입니다.

python
코드 하이라이팅 중...

split()이 돌려준 리스트의 원소 개수와 좌변 변수의 개수가 정확히 같아야 합니다. 입력값을 정수로 사용하려면 int()로 한 번 더 변환합니다.

python
코드 하이라이팅 중...

별표(*) 확장 언패킹 심화

언패킹할 때 변수 앞에 *를 붙이면, "남은 원소들을 모두 리스트로 받아라"는 뜻이 됩니다.

python
코드 하이라이팅 중...

*는 가운데에 둘 수도 있고, 마지막에 둘 수도 있어요.

python
코드 하이라이팅 중...

*가 붙은 변수는 항상 리스트로 결과를 받습니다 (원소가 0개여도 빈 리스트 []를 받아요).


정보처리기사 실기 기출 문제