파이썬에서 사용하는 변수는 객체를 가리킨다.
여기서 객체란 파이썬에서 사용되는 모든 것 을 의미하는 말이다.
이게 무슨말?
이 개념에 대한 직관적인 설명을 잘해둔 페이지가 있어 여기 소개한다.
신기하게도, C 에서 변수를 선언하면 각각 다른 메모리 공간에 상수로 들어갔던 것과 달리
파이썬에서는 같은 객체를 가리킨다.
예제로 직관적 이해를 해보도록 하자.
a = 3
먼저 이렇게 선언했을 때,
변수 a는 객체가 저장된 메모리 위치를 가리킨다.
또 오른쪽 3은, 정수 자료형 객체가 자동으로 메모리에 생성된다.
이렇게 보면 변수 a는 객체가 저장된 메모리의 위치를 가리키는 레퍼런스 라고 생각할 수 있다.
그리고 만약 내가 같은 객체를 다른 변수를 통해 가리킨다면, 같다고 뜬다.
>>> a = 3
>>> b = 3
>>> a is b
True
a가 3을 가리키고 b도 3을 가리킨다.
즉 a=3 을 입력하는 순간 3이라는 정수형 객체가 생성되고 변수 a는 3이라는 객체의 메모리 주소를 가리킨다.
다음에 변수 b가 동일한 객체인 3을 가리킨다.
이제 3이라는 정수형 객체를 가리키는 변수가 2개가 됐다.
이 두 변수는 가리키고 있는 대상이 동일하다.
따라서 동일한 객체를 가리키고 있는지 아닌지에 대해서 판단하는 파이썬 내장 함수인 is 함수를
a is b처럼 실행했을 때 참(True)을 리턴하게 된다.
이렇게 하나의 객체를 가리키는 변수의 개수를 레퍼런스 카운트 (참조 개수) 라 한다.
여기서는 2가 되겠다.