[ComputerScience bootcamp with python 1-2~4장]


본 포스팅은 컴퓨터사이언스 부트캠프 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





© 2018. by Dev_Yonghee

Powered by Dev_Yong