모든 게시물은 macOS Monterey 12.0.1 버전을 기준으로 작성하였습니다.
부스트캠프 AI Tech 3기 예비 캠퍼를 위한 Pre-Course 강좌를 바탕으로 작성하였습니다.
Module and Project
모듈과 프로젝트는 코드를 남들에게 공개할 때 혹은 남이 만든 코드를 가져와 쓸 때
우리가 사용하는 기본적인 체계가 되는 것이 모듈과 프로젝트다.
강의에서 재미있는 사진을 예시로 들어주셔서 가져왔다.
JAVA는 본문까지 가는데 왜 이리 오래 걸리느냐.
Python은 Import Essay로 에세이를 끝내버렸느냐.
그만큼 파이썬은 대부분의 라이브러리가 다른 사용자들에 의해 잘 구현되어 있다.
모듈은 어떤 대상의 부분이자 조각을 이야기한다.
이를 모아 하나의 큰 프로그램 즉, 패키지를 만든다. 그리고 프로젝트까지.
프로그램 모듈화를 잘 시키면 다른 프로그램 사용이 용이해진다고 한다.
그 대표적인 예로 카카오 게임을 위한 카카오톡 접속 모듈이 있겠다.
실제로 Python에도 Built-in Module인 Random이 있고, 이를 활용하여
난수를 쉽게 생성할 수 있다. import random & random.randint(1,1000) 등
파이썬에서 Module은 .py 파일을 의미한다.
같은 폴더에 Module에 해당하는 .py 파일과 사용하는 .py를 저장한 후
import 문을 통해 Module을 호출하여 사용하는 것이다.
VS Code로 호다닥 파일을 만들어 Google Drive에 넣어 colab으로 진행하였다.
만약 colab을 이용해서 진행한다면 Google Drive Mount를 해줘야 한다.
마운트가 이뤄져야 위 사진과 같이 import가 성공적으로 수행된다.
fah_converter.py 형태로 module을 같은 폴더에 만들어놨으니
import를 통해 해당 module을 불러와 그 module 속 함수를 사용할 수 있다.
모듈을 호출할 때 일종의 범위를 설정할 수 있는데 이미 별 생각없이 해왔을 것이다.
모듈 속 모든 코드를 호출하는 것을 방지하기 위해 수행하는 것이 namespace다.
가장 선호하는 방식은 개인마다 다르지만 Alias 설정 방식을 선호하신다고 한다.
코드의 Readibility 관점에서 fah. 이라는 표시가 있는 것이 좋다.
파이썬이 기본적으로 제공하는 Built-in Module이 있는데 아래와 같다.
사실 파이썬에는 수 많은 모듈이 존재하는데 어떻게 활용할 수 있을까?
코드 구현 <<< 남들 코드 이해아여 불러오는 상황이 잦기에 역시 구글링이다.
그래서 모듈 자체를 아는 것보다는 모듈에 관한 검색 키워드를 알아야 한다.
패키지는 하나의 대형 프로젝트를 만드는 코드의 묶음이다.
다양한 모듈들의 합, 폴더로 연결되며,
__init__, __main__ 등 키워드 파일명이 사용된다.
패키지를 만드는 예는 다음 문서를 참조하여 진행되었다.
Test-python shell을 진행할 때는 현재 디렉토리를 패키지 폴더로 옮겨야 한다.
그 후에 from sound import echo -> echo.echo_play() 와 같이 사용 가능하다.
즉, echo라는 모듈을 불러와 그 속 함수를 사용한 것이다.
현재 폴더가 패키지임을 알리는 초기화 스크립트인데
제일 상단에 있는 __init__.py 속에 다음과 같은 스크립트를 작성한다.
다음과 같은 작업을 모든 모듈의 __init__.py 파일에 대해서 진행해야 한다.
폴더별로 __init__.py를 구성하는 단계는 python 3.3 이후부터는 안해도 된다.
후에 메인 폴더에 __main__.py 파일을 작성하여 다른 폴더의 모듈을 가져와
사용하여 아래와 같이 하나의 종합적인 패키지를 만드는 것이다.
https://github.com/scikit-learn/scikit-learn/blob/main/sklearn/utils/__init__.py
이처럼 다양한 모듈을 어떻게 호출하여 사용하면 되는지 등을 기록한다.
하나의 프로젝트를 공개한다는 것은 거대한 문서를 만드는 일이다.
오픈소스 라이브러리를 사용하는 방법에 대해 알아보자.
그때 충돌하는 문제를 예방하기 위해 가상환경 설정하는 방법을 알아야 한다.
학회나 랩실 GPU를 사용할 때 혹은 개인 프로젝트를 진행할 때도
가상환경 설정의 중요성은 언제나 듣고 시작하는 이야기였기에 익숙한 주제다.
conda가 Anaconda-Navigator가 있어서 편리하여 지금까지 사용중이다.
강의에서 설치한 패키지는 두 가지다.
matplotlib : 대표적인 파이썬 그래프 관리 패키지, 다양한 데이터 분석에 사용된다.
tqdm : for loop 등을 돌릴 때 얼마나 남았는 지 등을 계산해준다.
loop을 길게 돌리다보면 내가 현재 어디에 있는지를 알아야 한다.
특히 대용량 데이터를 돌릴 때 필수적이므로 알아두자.