가변형: dict, list
불변형: tuple,str,int,bool,float
리스트 함수는 리스트를 복사해준다 .
y = list(x)
1번 줄에서 리스트 ["이가훈", "김민주", "최고은", "우설희", "최규호"]를 변수 x에 지정합니다. 즉, 변수 x가 리스트 ["이가훈", "김민주", "최고은", "우설희", "최규호"]를 가리키게 됩니다.
y = list(x)로 인덱스를 슬라이싱해온것 그러므로 x 의 값이 y 에 의해 변형되지않고 list 만 복사되서 y 에 할당된것
2번 줄에서 x가 가리키는 리스트에 대한 복사본을 만듭니다. 그리고 y는 그 복사본을 가리키게 됩니다.
4번 줄에서 y가 가리키는 리스트의 0번 인덱스 값을 "강귀윤"으로 수정합니다. 이제 변수 y가 가리키는 리스트는 ["강귀윤", "김민주", "최고은", "우설희", "최규호"]가 됩니다. 참고로 x와 y는 다른 리스트를 가리키기 때문에, 4번 줄이 x에는 아무런 영향을 끼치지 않습니다.
5번 줄에서 x가 가리키는 리스트의 1번 인덱스 값을 "김원일"로 수정합니다. 이제 변수 x가 가리키는 리스트는 ["이가훈", "김원일", "최고은", "우설희", "최규호"]가 됩니다. x와 y는 다른 리스트를 가리키기 때문에, 5번 줄이 y에는 아무런 영향을 끼치지 않습니다.
7번 줄에서 x를 출력하면, x가 가리키는 리스트인 ["이가훈", "김원일", "최고은", "우설희", "최규호"]가 출력됩니다.
3번 줄에서 변수 x를 변수 z에 지정합니다. 즉, 변수 z는 변수 x가 가리키는 곳을 함께 가리키게 됩니다. 변수 z는 변수 x의 가명(alias)라고 할 수 있습니다.
1~3번 줄을 정리하면 이렇습니다.
x와 z는 같은 리스트를 가리킨다.
y는 x가 가리키는 리스트의 복사본을 가리킨다. 즉, y와 x는 다른 리스트를 가리킨다.
x의 값이 z 에 의해 변형됨 같은 리스트를 끌고와서 씀 y 는 x의 값을 리스트로 복사한 alias