(오류 수정 환영합니다!)

1. C언어가 변수를 다루는 방식

일반적으로 c언어는 다음과 같은 방식으로 변수를 다룬다.

위 방식들은 알고 있다는 전제로 이야기를 이어나가겠다. (시간나면 정리해보겠습니다!)

2. 파이썬이 변수를 다루는 방식

파이썬은 c언어와 다른 방식으로 변수를 다룬다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/4050cce5-12cc-4737-a38a-9eccf627f9d0/Untitled.png

c언어에서는 1이라는 값을 세 변수에 할당해주면 각각의 공간에 각각 1을 저장한다.

하지만 파이썬은 1이라는 객체를 생성하고 각 변수들은 1이라는 객체를 가리킨다.

a = b = c = 1
print('a = ', id(a),'b = ', id(b),'c = ', id(c)) #id() 는 주소값을 알려줌
a += 1
print('a = ', id(a))
a -= 1
print('a = ', id(a))
lst = [1, 2, 3]
print('lst = ', id(lst),'lst[0] = ', id(lst[0]),'lst[0]+1 = ', id(lst[0]+1))

다음은 실제 출력 내용이다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c8e89502-7f43-4df9-9f15-7bc2cd92e323/Untitled.png

a, b, c의 주소가 모두 같다.

a에 +1을 하면(=2) 주소가 변경된다.