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부터는 서로 다른 객체가 생성된다.
'파이썬' 카테고리의 다른 글
04/28 파이썬 6 - 튜플과 딕셔너리 (0) | 2020.04.28 |
---|---|
04/27 파이썬 5 - 리스트 데이터 삽입, 삭제 (0) | 2020.04.27 |
04/26 파이썬 4 - 리스트, 인덱싱, 슬라이싱 (0) | 2020.04.26 |
04/26 파이썬 3 - 기본 데이터 타입 (0) | 2020.04.26 |
04/24 파이썬 2 - 문자열, 인덱싱, 슬라이싱 (0) | 2020.04.24 |