문제 설명
자세히 보기
들어가기에 앞서
제 원래 개발 환경은 MacOS이나, 부트캠프를 통해 윈도우를 설치하고 그 위에서 진행하였습니다.
Python 및 Anaconda 설치
다음 블로그를 참조하여 Python 3.11을 설치하였습니다.
폴더명은 C:\Python3 로 설정하였습니다.
다음 블로그를 참조하여 Anaconda를 설치했습니다.
이후, pandas를 설치하기 위해 pip install pandas 를 실행합니다.
본격적인 시작!
Anaconda Navigator에서 VS Code를 시작해 줍니다.
과제 1) 메소드 호출
Python은 def 키워드를 사용하여 함수를 정의합니다.
다만 정의하는 것과 실행하는 것은 별개이죠.
그럼 함수를 호출할 때 메모리에서는 어떤 일이 벌어질까요?
그림처럼 cal_upper라는 함수를 호출하면,
인자에 위치하는 변수 price가 입력된 인자 10000을 바인딩하게 됩니다.
이렇게 입력된 인자 값 10000은 메모리 어딘가에 할당됩니다.
두번째는 실행 단계입니다.
실행 내용은 이렇게 된다고 가정해 봅시다.
increment = price * 0.3
upper_price = price + increment
Python
복사
첫 번째 문장이 실행되고, price * 0.3의 값이 메모리 어딘가에 할당됩니다.
또한 increment 변수는 이 값을 바인딩합니다.
그 다음 price + increment가 또 할당되고, 이를 upper_price가 할당받습니다.
지금까지 과정에서 중요한 건 price, increment, upper_price가 실제로 메모리에 저장되어있다는 겁니다.
마지막은 함수 종료 단계입니다.
방금 전에 함수를 실행하며 생긴 중간값들을 메모리에 계속하여 할당하였는데,
이렇게 할당만 하면 당연히 언젠가는 메모리가 고갈되겠죠?
그렇기에 Python은 메모리 문제를 자동으로 해결하는 메커니즘을 사용합니다. 그 중 하나로, 방금 전에 생긴 중간값들은 밖에서 더 이상 사용되지 않으므로 자동으로 메모리에서 삭제합니다.
방금 계산한 increment와 upper_price 모두 메모리에서 삭제되었기 때문에 함수는 정상 동작하지 않았습니다.
그렇기에 실제 수정된 upper_price를 받기 위해 return upper_price를 사용합니다.
다음은 함수 호출을 설명하는 내용이라고 합니다.
집에 거실과 안방이 있는데,
파이썬 코드는 기본적으로 거실에서 실행됩니다.
이 상태에서 함수가 호출되면 안방 문을 열고 들어갑니다.
이때 함수 인자가 거실에서 안방으로 전달됩니다.
(인자 전달)
안방 문이 닫히고 안방 내에서 어떤 연산이 수행됩니다.
함수 내 모든 코드가 실행되면 다시 안방 문이 열리고 결과를 거실로 넘깁니다.
(함수 반환)
함수 호출이 완료되면 안방 문이 닫히기 때문에 거실에서는 더는 안방에 어떤 값이 있었는지 확인할 수 없습니다.
오직 함수가 호출될 때, 그리고 함수가 종료될 때만 인자 및 반환값의 전달을 통해서만 값이 전달될 수 있습니다.
함수가 종료된 후 안방 문이 닫히면 안방 내에서 생성된 값들은 모두 정리됩니다.
(메모리 해제)
Reference
과제 2) 변수 할당
할당이란, 만들어진 변수에 값을 저장하는 과정입니다.
x = 10이라는 코드가 있다고 가정해 보겠습니다.
x라는 변수를 생성하고, 이 변수에 10이란 값을 할당하였습니다.
어때요, 참 쉽죠?
Reference
과제 3) Pandas와 Python 자료형의 비교
Pandas는 Python의 외부 라이브러리임에도, 둘의 자료형은 같으면서도 서로 다르게 인식됩니다.
다음은 각각을 어떻게 인식하는지를 정리한 표입니다.
Pandas Type | Python Type | Meaning |
object | string | String |
int64 | int | Integral number |
float64 | float | Real number |
dataframe64 | datetime | 파이썬 표준 라이브러리인 datetime이 반환되는 자료형 |