본문 바로가기

파이썬

04/23 파이썬 1 - 변수, 객체, 바인딩

1. 변수

파이썬 IDLE를 실행한 후 프롬프트에 다음과 같이 입력한다.

 

Jaechul = 1998

 

위 코드의 "="는 수학에선 '같음'을 의미하지만,

파이썬에선 "Jaechul이라는 변수가 1998이라는 값을 가리키게 하라"는 의미다.

파이썬에서는 이것을 바인딩(binding)이라고 한다.

 

 

변수와 객체의 바인딩

 

 

1-1 파이썬의 변수, 객체 그리고 바인딩

컴퓨터에서 처리되는 데이터는 메모리의 어딘가에 존재하게 된다.

위의 1998이라는 값이 메모리 어디에 있는 지를 Jaechul이라는 변수가 가리키고 있는 것이다.

 

age = 23

 

위의 코드를 실행시키면 23이라는 값이 메모리 어딘가에 할당이 되는데, 파이썬에서는 이를 객체(object)라고 한다.

변수 age는 메모리 어딘가에 할당되는 공간인데, 그 공간에 23이라는 객체의 메모리 주소값이 저장돼 있다.

 

변수와 객체를 비유하자면, 객체는 집이고 변수는 주소이다. 즉, 변수를 통해 객체에 도달할 수 있다.

 

 

 

그럼 파이썬에서 메모리에 할당된 객체의 자세한 위치정보를 어떻게 확인할까?

 

다음과 같은 id 함수를 사용하면 된다.

 

>>> age = 23
>>> id(age)
2047400512
>>>

 

 

그럼 서로 다른 변수에 같은 객체 값이 들어가면 어떻게 될까?

 

x = 12
y = 12
id(x), id(y)

 

위 코드를 실행해보면 id(x)와 id(y)의 값이 같음을 알 수 있다. 서로 다른 변수가 같은 객체를 가리키고 있는 것이다.

하지만 항상 이런 것은 아니다.

 

x = 257
y = 257
id(x), id(y)
>(65490592, 65490528)

 

위 코드를 실행하면 id값이 다르다. 즉, 변수 x와 변수 y는 서로 다른 객체를 가리키고 있는 것이다.

 

왜 이런 것일까?

 

파이썬은 정수값 중 자주 사용할 것 같은 범위의 정수값은 메모리에 한 번만 올려둔다.

메모리를 효과적으로 사용하기 위해서이다. 

위와 같은 방식으로 x, y변수에 바인딩해보면 256까지는 id값이 같지만 257부터는 서로 다른 객체가 생성된다.