본문 바로가기
PL (Programming Language)/Python

[Python] 파이썬 id함수로 알아보는 변수의 특성 (메모리 주소와 변수의 대응관계, 포인터)

by jangThang 2022. 1. 23.
반응형

[ Contents ]

     

     

     

    1. 데이터와 변수 공간

    2022.01.23 - [PL (Programming Language)/Python] - [Python] 변수(Variable)와 자료형(Data type)

     

    [Python] 변수(Variable)와 자료형(Data type)

    2022.01.23 - [PL (Programming Language)/Python] - [Python] print() 함수로 알아보는 프로그래밍 함수의 정의  저번 시간에 print를 통해 프로그래밍 함수에 대해 알아봤습니다. 이 시간에는 변수와 자료형에..

    star7sss.tistory.com

     파이썬은 데이터를 변수 공간에 저장합니다. 데이터는 음식이고, 변수 공간은 그릇이라고 볼 수 있습니다. 그릇은 여러 번 재사용할 수 있죠. 이처럼 변수도 여러 데이터를 번갈아 저장합니다.

     

     A라는 데이터에 '10'이라는 데이터가 저장되었다가, "jangThang"으로 변경되었습니다. 이전 데이터인 10을 다시 불러올 방법은 없으며, A에는 "jangThang"이라는 데이터만 담겨있습니다.

     이렇게 보니, 마치 변수라는 공간에 데이터가 저장되었다가, 지워졌다, 다시 저장되는 것처럼 보입니다. 정말 그럴까요?

     

     

     

    2. id함수와 메모리 주소

    id()

     id함수는 저장된 메모리 주소를 반환합니다. 이 함수를 이용해서 파이썬이 변수에 저장하는 원리를 알아보겠습니다.

     

     

     count라는 동일한 변수를 사용하여 여러 데이터를 저장해봤습니다. 동일한 변수 공간을 사용했기 때문에, 메모리 주소도 동일할 것 같습니다. 하지만 결과는 달랐습니다  count = 1 일 때와 count = 2일 때의 메모리 주소가 다릅니다. 이를 통해 파이썬은 고정된 메모리 주소에 변수 공간을 생성하는 방식이 아니라는 걸 알 수 있습니다.

     

     한편, 다시 count에 1을 대입하자 메모리 주소가 같아졌습니다. 이게 어찌된 일일까요?

     

     

     

     파이썬은 변수 안의 값을 변경할 때, 메모리에 저장된 값을 지우고 다시 저장하지 않습니다.

     

     

     

     그 대신 또 다른 메모리 공간에 값을 저장하고, 그곳을 count 변수로 지정합니다. 저장할 공간이 많으니, 굳이 값을 덮어쓸 필요가 없죠.

     

     

     

     값을 지우지 않기 때문에, 1은 그대로 남아있고 나중에 재사용할 수 있습니다. 만약에 count = 2라고 지정하면, 다시 2가 저장된 메모리를 가리킬 것입니다.

     이렇듯 변수는 메모리 공간을 가리키는 화살표(포인터) 역할을 합니다. 

     

     

     

    3. 백견이 불여일행

    count = 1
    print("count의 메모리 주소 :", id(count))
    num = 1
    print("num의 메모리 주소 :", id(num))

     만약 동일한 값을 가진 두 변수가 있다면 어떨까요? 이 경우에도 두 변수의 메모리 주소가 같을까요?

     한 번 고민해보시고, 정답을 확인해보시기 바랍니다. 그리고 왜 그런지도 한 번 생각해보세요!

     

     

     

    반응형

    댓글