이 포스팅은 Python Basic 시리즈 13 편 중 3 번째 글 입니다.

  • Part 1 - 01: Introduction
  • Part 2 - 02: String Array, List, Data Type
  • Part 3 - This Post
  • Part 4 - 04: Function Design Recipe (FDR)
  • Part 5 - 05: String
  • Part 6 - 06: Conditional Statement
  • Part 7 - 07: Module
  • Part 8 - 08: Class & Method
  • Part 9 - 09: List
  • Part 10 - 10: Loop
  • Part 11 - 11: File
  • Part 12 - 12: Other Data Types
  • Part 13 - 13: Class
▼ 목록 보기

모든 변수는 객체이다.

파이썬에서 사용하는 변수는 객체를 가리킨다. 여기서 객체란 파이썬에서 사용되는 모든 것 을 의미하는 말이다. 이게 무슨말일까? 이 개념에 대한 직관적인 설명을 잘해둔 페이지가 있어 여기 소개한다. 객체란?

신기하게도, 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가 되겠다.