[ComputerScience bootcamp with python 1-2~4장]
in Python on BootcampPython
본 포스팅은
컴퓨터사이언스 부트캠프 with 파이썬
이라는 책을 참고하여 개인 공부를 하면서 정리하고 있습니다.문제 될 시 삭제하겠습니다.
Chapter 1 변수
1-2. 변수의 의미
변수란 데이터를 저장할 수 있는 메모리 공간을 의미
변수가 단순한 이름이 아니라 메모리 공간 자체를 의미
- 변수에는 숫자와 문자뿐만 아니라 객체, 함수까지도 담을 수 있음
- 변수에 담긴 값이나 가리키는 대상은 언제라도 변경될 수 있음
- 다른 언어에서 말하는 변수와 파이썬에서 말하는 변수는 다름
- C언어
int num = 5
num이라는 변수에 5라는 값이 담겨 있으며, 직관적으로 알 수 있음
1-3. 파이썬에서의 변수: 이름과 값 객체
- 파이썬에서 쓰는 변수는 이름, 값 객체로 구분
우리가 파이썬에서 변수라고 부르는 것은 이름
num = 5
num
이라는 이름은 5라는 값 객체를 가리킴num
은 5라는 값을 담고 있는 메모리 공간 의미 X- 값 객체는 다른 메모리 공간에 존재
type(num)
<class 'int'>
이 코드는 num
이라는 변수의 타입이 상수가 아니라 int
라는 클래스의 인스턴스(객체)를 뜻함
연습문제
a = 5
b = 5
c = a 는 모두 같은 주소를 가리키고 있을까?
In [1]: a = 5
In [2]: b = 5
In [3]: c = a
In [4]: id(a)
Out[4]: 94160011780992
In [5]: id(b)
Out[5]: 94160011780992
In [6]: id(c)
Out[6]: 94160011780992
그렇다.
a = 3으로 했을 때, c는 어떤 값을 가지게 될까?
In [7]: a = 3
In [8]: c
Out[8]: 5
In [9]: a
Out[9]: 3
In [10]: id(a)
Out[10]: 94160011780928
In [11]: id(c)
Out[11]: 94160011780992
c는 그대로 5를 가지고 있다.
c = a 를 했을 때, 그때의 a가 가리키고 있는 주소를 복사한다.
a가 새로운 주소를 가리켜도 c는 이전에 참조했던 a의 주소를 계속 가리킨다.
a = [1, 2, 3]
b = [1, 2, 3]
c = a 는 모두 같은 주소를 가지고 있을까?
In [1]: a = [1, 2, 3]
In [2]: b = [1, 2, 3]
In [3]: c = a
In [4]: id(a)
Out[4]: 140104475862600
In [5]: id(b)
Out[5]: 140104454112136
In [6]: id(c)
Out[6]: 140104475862600
a와 c는 같지만 b는 다르다.
a 리스트 요소 중, 하나를 바꾸면 c 리스트는 어떻게 될까?
In [15]: a[0] = 5
In [16]: a
Out[16]: [5, 2, 3]
In [17]: c
Out[17]: [5, 2, 3]
c 리스트도 같이 바꿨다. 어떻게 된걸까?
a 리스트와 c 리스트 둘 다 같은 리스트 객체를 가리키고 있기 때문이다.
In [18]: d = 5
In [19]: id(d)
Out[19]: 94748428182400
In [20]: id(a[0])
Out[20]: 94748428182400
In [21]: id(c[0])
Out[21]: 94748428182400
a[0], c[0], d 모두 같은 주소를 가리키고 있다는 것을 볼 수 있다.
In [22]: d = 3000
In [23]: a[0] = 3000
In [24]: a
Out[24]: [3000, 2, 3]
In [25]: c
Out[25]: [3000, 2, 3]
In [26]: id(d)
Out[26]: 140104464703312
In [27]: id(a[0])
Out[27]: 140104464561424
In [28]: id(c[0])
Out[28]: 140104464561424