아핫뉴스실시간 인기검색어
아핫뉴스 화산 이미지
화산 아이콘 11
비트코인 시세 하락
아하

생활

생활꿀팁

과감한해파리96
과감한해파리96

파이썬에서 변수는 어떻게 저장이 되는 걸까요?

파이썬 공부를 시작한 초보입니다.

책을 보고 공부하다가 갑자기 궁금한 점이 생겼습니다.

a = [1, 2, 3]

b = a

a[0]='suprise'

c = 7

d = c

c= 9

print(a,b,c,d)

위와 같이 해서 결과를 보면 리스트는 b도 a에 따라서 같이 변했는데, 숫자의 경우는 d가 c에 맞게 바뀌지가 않네요.

어떤 이유로 이런 일이 발생하는 지 궁금합니다.

    2개의 답변이 있어요!
    • 보랏빛수염고래51
      보랏빛수염고래51

      이렇게 생각하시면 됩니다.

      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 명령으로 변수의 주소를 확인해보면 이해하기 쉬울 거예요.