생활
파이썬에서 변수는 어떻게 저장이 되는 걸까요?
파이썬 공부를 시작한 초보입니다.
책을 보고 공부하다가 갑자기 궁금한 점이 생겼습니다.
a = [1, 2, 3]
b = a
a[0]='suprise'
c = 7
d = c
c= 9
print(a,b,c,d)
위와 같이 해서 결과를 보면 리스트는 b도 a에 따라서 같이 변했는데, 숫자의 경우는 d가 c에 맞게 바뀌지가 않네요.
어떤 이유로 이런 일이 발생하는 지 궁금합니다.
55글자 더 채워주세요.
2개의 답변이 있어요!
이렇게 생각하시면 됩니다.
c = 7 #7 개체를 가리키는 포인터 d = c #c 개체를 가리키는 포인터 c= 9 #9 개체를 가리키는 포인터d = c를 해줬을때는 c가 가리키는 포인터 주소를 가르켜 동일한 참조 주소 값을 가지고 있지만
c = 9를 하는 순간 9개체의 포인터 참조 주소로 변경 되게 됩니다.
파이썬에서 변수는 데이터를 가리키는 포인터 형식으로 정의됩니다.
b=a를 하면 b는 a와 같은 list 객체를 가리키게 되고, d=c를 하면 d와 c는 같은 int 객체를 가리키게 되죠.
질문의 현상이 발생하는 이유는 list는 mutable 객체, int는 immutable 객체이기 때문입니다.
list는 mutable하기 때문에 a[0]='suprise'로 a가 가리키는 공간의 내부 값을 바꿀 수 있습니다.
int는 immutable하기 때문에 c=9를 했을 때 c가 가리키는 공간의 내부 값을 바꿀 수 없습니다.
대신 새로운 메모리 공간에 9를 넣고 그걸 c가 가리키게 만들죠.
각 줄마다 id 명령으로 변수의 주소를 확인해보면 이해하기 쉬울 거예요.