클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

파이썬 프로그래밍의 기초, 자료형 16 - 자료형의 값을 저장하는 공간, 변수 본문

프로그래밍 언어/파이썬

파이썬 프로그래밍의 기초, 자료형 16 - 자료형의 값을 저장하는 공간, 변수

huenuri 2024. 9. 2. 05:48

이 부분은 무척 어려운 내용이라 이해가 되지 않으면 넘어가도 된다고 한다. 그래도 난 C언어도 공부하고 자바도 했으니 분명 이해할 수 있을 것 같다.


 

 

 

변수는 어떻게 만들까?

변수는 1이라는 값을 a에 넣는다고 배웠다.

 

 

 

어떤 값을 실제로 컴퓨터에서 처리할 때 메모리에 올린 다음 메모리에서 연산을 한다. 이 메모리가 실제로 값을 저장하는 공간이다. 메모리의 주소값을 가져올 수 있다.

 

 

 

 

 


 

 

 

 

 

id는 변수가 가리키고 있는 객체의 주소값을 리턴하는 파이썬의 내장 함수이다. 변수 a의 주소값은 이와 같다.

 


 

 

 

 

리스트를 복사하고자 할 때

b 변수에 a 변수를 대입하면 어떻게 될까? b와 a는 같은 걸까? b는 a와 동일하다고 할 수 없다. [1, 2, 3]이라는 리스트 객체를 참조하는 변수가 a 변수 1개에서 b 변수가 추가되어 2개로 늘어났다는 차이가 있을 뿐이다.

개체는 자료형이라고 보면 된다. 이 내용을 그림으로 살펴보면서 알아보기로 하자.

 

 

파이썬 튜터

 

Online Python Tutor - visualize, debug, get AI help for Python, Java, C, C++, and JavaScript

Online Compiler, Visual Debugger, and AI Tutor for Python, Java, C, C++, and JavaScript Python Tutor helps you do programming homework assignments in Python, Java, C, C++, and JavaScript. It contains a unique step-by-step visual debugger and AI tutor to he

pythontutor.com

 

 

 

a는 값이 아닌 메모리의 주소를 갖고 있다. a 리스트의 주소를 b에 넣은 것이다. a, b가 같은 값을 가리키고 있다. 그리고 a의 첫번째 인덱스를 4로 바꾸었다. 그런 다음 print를 찍으니 b의 값도 바뀌었다.

a가 b로 복사가 된 것이 아니라 같은 것을 바라보게 된 것이다.

 

 

 

a가 리스트 1, 2, 3을 가리키고 있었는데 이제 b도 가리키게 되었고 주소값도 같게 되었다. 즉, a가 가라키는 대상과 b가 가리키는 대상이 동일하다. 동일한 객체를 가리키고 있느지에 대해 판단하는 파이썬 명령어 is를 다음과 같이 실행해도 참을 리턴해준다.

 

 

 

 


 

 

 

 


 

 

 

 

주소값이 다르지만 복사가 되었기에 두 값은 같다.


 

 

 

 

copy 함수를 사용해도 결과는 같다.

 


 

 

 

그림으로 보니 더 이해가 잘 된다. 두 값이 복사된 것을 볼 수 있다.


 

 

 

 

여기서 b의 두번째 요소 값이 4로 달라졌다.


 

 

 

 

변수를 만드는 여러 가지 방법

 

 

 


 

 

 

 

다른 언어에서는 temp라는 변수를 사용해서 값을 집어넣었다 빼는 복잡한 과정을 거쳐야 하지만 파이썬에서는 이렇게 간단하게 한줄로 정리가 된다.

 


 

 

 


 

 

학습을 마치고

마지막 단원은 무척 어려운 개념이었지만 그래도 잘 따라갔고 이제 거의 이해할 수 있게 되었다. 그동안 난 변수가 주소값이 저장되는지 몰랐었다. 포인터만 그런 줄 알았는데 아니었다. 그리고 전에 C 언어 공부할 때 이 사이트를 가끔씩 이용했었는데 요즘은 잊어버리고 있었다.

다시 이 사이트를 알게 되어 정말 기뻤다. 앞으로는 자주 이런 식으로 이용하면서 값의 변화를 기록해볼 생각이다. 이제 단원 마무리 연습문제가 남았는데 수업 갈 시간이 얼마 남지 않아 다 풀지는 못할 것 같다. 그래도 하는데까지 해봐야지!