튜플의 고급 사용법 - 언패킹

학습 페이지

# Tuple Advanced
# Unpacking

print(divmod(100, 9))
# 인자를 언패킹해서 전달
print(divmod(*(100, 9)))
# 결과를 언패킹해서 출력
print(*(divmod(100,9)))

이정도 언패킹은 이제 이해가 될 것임…

그렇다면 이건 어떨까

x, y, rest = range(10)

image.png

이상태로 실행하면 인자가 변수가 부족하다고 한다. 10개를 풀어야 하는데 세개밖에 없어서..

이럴때는?

x, y, *rest = range(10)
print(x, y, rest)

image.png

rest에 나머지가 리스트로 들어가있다.

이게 왜 언패킹??? 이건 뭐지…? 왜 rest는 갑자기 리스트가 된 걸까???

저건 가변인자를 받을때 함수 파라미터에 * 를 붙여주는 것과 같은 문법으로 이해하면 이해가 되긴 한다… 리스트는 파이썬이 * 를 받기 위해 선택한 자료구조임.

불변, 가변과 id값

다음의 예시 코드를 보자.

# Mutable(가변) vs Immutable(불변)
t = (15, 20, 24)
l = [15, 20, 24]
print(t, id(t))
print(l, id(l))
t = t * 2
l = l * 2
print(t, id(t))
print(l, id(l))

image.png