강의로 돌아가기
changj1

tuple 값 바꾸기

tuple은 값이 한 번 결정되면 수정, 삭제가 불가능한 것으로 배웠습니다.

그런데 a,b = b,a를 하면 값의 수정이 발생하는데요. 그러면 해당 예제는 tuple과는 관련이 없는 예제가 아닌가요?
만약 a,b = b,a가 tuple을 응용한 것이라면 어떻게 위의 식이 가능한지 그 절차를 알고싶습니다.

1 개의 답변
정두식_
a=1
b=2
c = a,b = b,a

와 같이 해 보시면 느낌이 오실 것 같은데요. c = (2,1)이 됩니다.

  • b,a => (2,1)라는 튜플이 만들어 집니다. 이렇게 만들어진 튜플의 값은 수정할수 없긴 합니다만... 수정할 일도 없이 그냥 a,b에 값을 unpacking하는데 쓰이고 맙니다.
  • (2,1)의 값이 unpacking되서 각각 a,b에 들어갑니다.
  • 이제 a는 2, b는 1이 되었습니다.
  • c = a,b가 남았으니 c= (2,1)이 됩니다.

위의 과정에서 만들어진 튜플이 수정된 적은 없습니다. 그냥 unpacking되었을 뿐이고 unpacking되서 변수의 값이 변경되고 나면 새로운 튜플이 만들어 집니다. 이렇게 만들어진 새로운 튜플 c = (2,1)의 element를 변경할 수는 없습니다.

  • changj1
    네 그렇군요. 너무 tuple의 개념에 갇혀있다보니 a,b도 바뀌어서는 안되는 tuple로 착각했었네요. 답변 감사합니다. changj1 2018.08.16 10:20
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.