할당은 값에 이름을 붙이는 연산자로, 파이썬에서 등호는 수학의 같다와 다르다. 오른쪽 식이 먼저 계산되어 하나의 값으로 확정되고, 그 값이 왼쪽 변수에 연결된다. 변수는 값을 담는 그릇이 아니라 값을 가리키는 이름표로 이해해야 한다. 값은 메모리에 독립적으로 존재하고, 변수는 그 값을 찾을 수 있는 연결 고리이다. 같은 객체를 여러 변수로 가리킬 수 있으며, 복합 할당은 현재 값을 이용해 다시 대입하는 축약 문법으로 작동한다. 숫자나 문자열 같은 값이 아닌, 저장 대상이 되는 이름이 왼쪽에 와야 한다는 점이 핵심이다.
객체는 파이썬의 모든 값이 포함하는 데이터 덩어리이며, 값(Type)과 정체성(Identity)와 함께 동작한다. 객체는 데이터와 그 데이터를 다루는 규칙인 설명서로 구성되고, 같은 값이라도 다른 객체일 수 있다. 변수는 이름표이므로 같은 값을 가리키는 여러 이름이 가능하지만, 값 자체는 메모리에 존재하는 독립된 객체다. 할당에서 오른쪽은 항상 식으로 구성되어 하나의 값으로 평가되고, 왼쪽에는 저장할 대상이 와야 한다. 예를 들어 x = 3 + 4는 오른쪽의 식이 먼저 계산되어 7로 정해진 다음 x에 연결된다. 또한 x = len('abc')처럼 함수의 반환도 하나의 값으로 간주된다.
리스트처럼 여러 값이 있는 경우 복합 할당이 중요한 역할을 한다. += 와 같은 복합 연산은 현재 값을 기반으로 새로운 값을 만들어 다시 대입하는 과정이다. 숫자에선 x += 5가 x = x + 5와 같지만, 리스트에선 +=가 리스트를 확장하는 작용으로 작동해 기존 객체를 직접 수정한다. 즉, a = [1, 2]; b = a; a += [3]면 a와 b는 같은 리스트를 가리키며, 두 모듈 모두 변경된 리스트를 공유한다. 반면 a = a + [3]은 새로운 리스트를 만들어 가리키는 방식이다.
언패킹은 묶여 있는 값을 자동으로 분해하여 변수에 차례로 대입하는 과정이다. 변수 개수와 값의 개수는 반드시 같아야 하며, 순서대로 들어간다. 튜플, 리스트, 문자열 등 반복 가능한 객체에서 가능하며, 딕셔너리의 경우 키가 먼저 언패킹되고 값은 values() 나 items()로 분리된다. 함수 반환값은 실무에서 주로 튜플 하나를 반환하고, 이를 여러 변수에 한 번에 나눠 받는다. 확장 언패킹은 일부 값을 개별 변수에 받고 나머지는 하나의 변수에 모아 받는 방식으로, 왼쪽에 있는 일반 변수에 먼저 값을 배분한 뒤 남은 값은 * 변수에 모아 리스트로 받는다. 위치는 자유롭고, 한 문장에선 하나의 확장만 허용된다.
스왑은 두 변수의 값을 동시에 교체하는 과정으로, 파이썬은 오른쪽 값을 먼저 읽어 왼쪽 변수에 한 번에 재배치한다. 이로써 한 줄의 대입으로 원래 값이 소실되거나 덮어쓰이는 문제를 피한다. 스왑은 변수 개수가 같아야 하며, 숫자나 리스트, 문자열 등 모든 값에서 동일하게 사용 가능하다. 끝으로 언패킹과 확장 언패킹의 핵심은 값의 흐름과 위치를 정확히 맞추는 데 있으며, 초보자가 자주 하는 오류를 피하려면 각 규칙의 본질을 이해하는 것이 중요하다.
#
파이썬객체참조
#
파이썬변수
#
파이썬복합할당
#
파이썬스왑
#
파이썬언패킹
#
파이썬초보문법정리
#
파이썬할당
#
파이썬확장언패킹