[부스트캠프 AI Tech 5기] Pre-Course : (3) Module and Project

araseo·2022년 12월 11일
0
post-thumbnail

📖 Module overview

  • 어떤 대상의 부분 혹은 조각
    예) 레고 블록, 벽돌, 자동차 부품들

  • 프로그램에서는 작은 프로그램 조각들, 모듈들을 모아서 하나의 큰 프로그램을 개발함
  • 프로그램을 모듈화 시키면 다른 프로그램을 사용하기 쉬움
    예) 카카오톡 게임을 위한 카카오톡 접속 모듈

📖 모듈(Module) in Python

  • Built-in Module 인 random을 사용하면 난수를 쉽게 생성할 수 있음
>>> import random
>>> random.randint(1,1000)
315
>>> random.randint(1,1000)
840
>>> random.randint(1,1000)
780
>>> random.randint(1,1000)
57
>>>

📖 패키지

  • 모듈을 모아놓은 단위, 하나의 프로그램

📖 Module 만들기

  • 파이썬의 Module == py파일을 의미
  • 같은 폴더에 Module에 해당하는 .py 파일과 사용하는 .py을 저장한 후 import 문을 사용해서 module을 호출
# fah_convereter.py
def convert_c_to_f(celcius_value):
	return celcius_value * 9.0 / 5 + 32

# module_ex.py
import fah_converter

print("Enter a celsius value: ")
celcius = float(input())
fahrenheit = fah_converter.convert_c_to_f(celsius)
print("That's ", farenheit, " degrees Fahrenheit")

📖 namespace

  • 모듈을 호출할 때 범위 정하는 방법
  • 모듈 안에는 함수와 클래스 등이 존재 가능
  • 필요한 내용만 골라서 호출할 수 있음
  • fromimport 키워드를 사용함

📖 namespace example

  • Alias 설정하기 - 모듈명을 별칭으로 써서
import fah_converter as fah
print(fah.convert_c_to_f(41.6))
  • 모듈에서 특정 함수 또는 클래스만 호출하기
from fah_converter import convert_c_to_f
print(convert_c_to_f(41.6))
  • 모듈에서 모든 함수 또는 클래스를 호출하기
from fah_converter import *
print(convert_c_to_f(41.6))

📖 Built-in Modules

  • 파이썬이 기본 제공하는 라이브러리
  • 문자처리, 웹, 수학 등 다양한 모듈이 제공됨
  • 별다른 조치없이 import 문으로 활용 가능
  • 수 많은 파이썬 모듈은 어떻게 검색할 것인가?
    1) 구글신에게 물어보기
    2) 모듈을 import후 구글 검색 또는 Help 쓰기
    3) 공식 문서를 읽어보기

📖 Built-in Module Example

# 난수
import random
print(random.randint(0,100))
print(random.random())

# 시간
import time
print(time.localtime())

# 웹
import urllib.request
response = urllib.request.urlopen("http://thetemlab.io")
print(response.read())

📖 Package overview

  • 하나의 대형 프로젝트를 만드는 코드의 묶음
  • 다양한 모듈들의 합, 폴더로 연결됨
  • __init__, __main__ 등 키워드 파일명이 사용됨
  • 다양한 오픈 소스들이 모두 패키지로 관리됨

📖 Package 만들기
1) 기능들을 세부적으로 나눠 폴더로 만듦
2) 각 폴더별로 필요한 모듈을 구현함

# echo.py
def echo_play(echo_number):
	print("echo {} number start".format(echo_number))

3) 1차 Test-python shell

>>> import echo
>> echo.echo_play(10)
echo 10 number start

4) 폴더별로 __init__.py 파일 구성하기

# 내가 쓸 파일명들을 선언해주기
__all__ = ['image', 'stage', 'sound']

from . import image
from . import stage
from . import sound
  • 현재 폴더가 패키지임을 알리는 초기화 스크립트
  • 없을 경우 패키지로 간주하지 않음 (3.3+ 부터는 X)
  • 하위 폴더와 py 파일(모듈)을 모두 포함함
  • import__all__ keyword 사용

5) __main__.py 파일 만들기

from stage.main import game_start
from stage.sub import set_stage_level
from image.character import show_character
from sound.bgm import bgm_play

if __name__ == '__main__':
	game_start()
    set_stage_level(5)
    bgm_play(10)
    show_character()

6) 실행하기 - 패키지 이름만으로 호출하기

(base) λ python game
Game start
Set stage level: 5
BGM 10 number start
show_character

📖 [참고] package namespace

  • Package 내에서 다른 폴더의 모듈을 부를 떼 상데 참조로 호출하는 방법
# 절대참조
from game.graphic.render import render_test

# '.' : 현재 디렉토리 기준
from .render import render_test

# '..' : 부모 디렉토리 기준
from ..sound.echo import echo_test

📖 Python Virtual Environment Overview

  • 프로젝트 진행 시 필요한 패키지만 설치하는 환경
  • 기본 인터프리터 + 프로젝트 종류별 패키지 설치
    ex) 웹 프로젝트, 데이터 분석 프로젝트
    - 각각 패키지 관리할 수 있는 기능
  • 다양한 패키지 관리 도구를 사용함
  • 대표적인 도구로 virtualenv와 conda가 있음
virtualenvconda
가장 대표적인 가상환경 관리 도구상용 가상환경 도구, miniconda 기본 도구
레퍼런스 + 패키지 개수설치의 용이성, Windows에서 장점

📖 conda 가상환경

conda create -n my_project python = 3.8
  • conda create : 가상환경 새로 만들기
  • -n my_project : 가상환경 이름
  • python = 3.8 : 파이썬 버전
  • 가상환경 호출
conda activate my_project
  • 가상환경 해제
conda deactivate
  • 패키지 설치
conda install <패키지명>
  • Windows에서는 conda, Linux, Mac에서는 conda or pip
  • Windows에서는 컴파일된 C라이브러리 설치 필요
  • conda를 사용하는 이유 : 파이썬 코드가 아닌 코드들도 많은데, 그런 코드들을 설치할 때는 compiled code들을 다운로드해서 설치하는데 conda는 그걸 자동으로 해줌

📖 conda 가상환경 예시

  • matplotlib 활용한 그래프 표시
  • 대표적인 파이썬 그래프 관리 패키지
  • 엑셀에서 사용하는 그래프와 같은 것들을 화면에 표시함
  • 다양한 데이터 분석 도구들과 함께 사용됨
import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.ylabel('some numbers')
plt.show()

from tqdm import tqdm
import time

for i in tqdm(range(100000)):
	if i % 1000 == 0:
    	time.sleep(1)

<이 게시물은 최성철 교수님의 Module and Project 강의 자료를 참고하여 작성되었습니다.>

본 포스트의 학습 내용은 [부스트캠프 AI Tech 5기] Pre-Course 강의 내용을 바탕으로 작성되었습니다.
부스트캠프 AI Tech 5기 Pre-Course는 일정 기간 동안에만 운영되는 강의이며,
AI 관련 강의를 학습하고자 하시는 분들은 부스트코스 AI 강좌에서 기간 제한 없이 학습하실 수 있습니다.
(https://www.boostcourse.org/)

profile
AI를 공부하고 있는 학생입니다:)

0개의 댓글