Ai Tech Pre-course Lec.5

Lilmeow·2023년 9월 7일
0

Boostcamp Step.1

목록 보기
5/10
post-thumbnail

Lec5: Module and Project

Python은 대부분의 Library가 이미 다른 사용자에 의해서 구현되어 있다.

01_Module and Package

1) Module Overview

  • Module = 어떤 대상의 부분 혹은 조각
  • Program에서는 작은 Program 조각들, Module들을 모아서 하나의 큰 Program을 개발함
  • Program을 Module화 시키면 다른 Program이 사용하기 쉬움

2) Module in Python

  • Built-in Module인 Random Module을 사용, 난수를 쉽게 생성할 수 있는 Module
  • Package = Module을 모아놓은 단위, 하나의 Program

02_Module

1) Module 만들기

  • Python의 Module = .py 파일을 의미
  • 같은 폴더에 Module에 해당하는 .py 파일과 사용하는 .py 파일을 저장한 후 Import로 Module 호출
# module_ex.py
import fah_converter

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

2) Namespace

  • Module을 호출할 때 범위 정하는 방법
  • Module 안에는 Function과 Class 등이 존재 가능
  • 필요한 내용만 골라서 호출 할 수 있음
  • from과 import 키워드를 사용
  • Namespace Example
    1) Module명을 별칭으로 사용해서 Alias 설정
import fah_converter as fah # fah_converter를 fah라는 이름으로
print(fah.convert_c_to_f(41.6)) # 그 안에 convert_c_to_f 함수를 사용

2) Module에서 특정 Function 또는 Class만 호출

from fah_converter import convert_c_to_f
print(convert_c_to_f(41.6)) # convert_c_to_f 함수만 호출

3) Module에서 모든 Function 또는 Class를 호출

from fah_converter import *
print(convert_c_to_f(41.6)) # 전체 호출

3) Built-in Modules

  • Python이 기본 제공하는 Library
  • 문자처리, 웹, 수학 등 다양한 Module 제공
  • 별다른 조치없이 import 문으로 활용 가능
  • Built-in Module Example
# 난수
import random
print (random.randint(0, 100)) # 0 ~ 100 사이의 정수 난수를 생성
print(random.random()) # 일반적인 난수 생성

# 시간
import time
print(time.localtime()) # 현재 시간 출력

# 웹
import urllib.request
response = urllib.request.urlopen("https://www.youtube.com/watch?v=PXEu_OZKFBQ&list=LL&index=3")
print(response.read())

03_Package

1) Package Overview

  • 하나의 대형 Project를 만드는 코드의 묶음
  • 다양한 Module들의 합, 폴더로 연결됨
  • init, main 등 키워드 파일명이 사용됨
  • 다양한 Open Source들이 모두 Package로 관리됨

2) Package 만들기

  1. 기능들을 세부적으로 나눠 폴더로 만든다

  2. 각 폴더별로 필요한 Module을 구현

# echo.py
def echo_play(echo_number):
    print("echo {} number start".format(echo_number))
  1. 1차 Test-Python Shell
import echo
echo.echo_play(10)
# echo 10 number start
  1. 폴더별로 init.py 구성하기
  • 현재 폴더가 Package임을 알리는 초기화 Script
  • 없을 경우 Package로 간주하지 않음(3.3+부터는 X)
  • 하위 폴더와 py파일(Module)을 모두 포함
  • import와 all keyword 사용
__all__ = ['image', 'stage', 'sound']
from . import image
from . import stage
from . import sound

  1. 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()
  • Package Namespace : Package 내에서 다른 폴더의 Module을 부를 때 상대 참조로 호출하는 방법
from game.graphic.render import render_test # import : 절대참조
from .render import render_test # .render : 현재 디렉토리 기준
from ..sound.echo import echo_test # ..sound.echo : 부모 디렉토리 기준
  1. 실행하기 : Package 이름만으로 호출하기

04_Open Source Library 사용하기

05_Virtual Environment 설정

1) Python Virtual Environment Overview

  • Project 진행 시 필요한 Package만 설치하는 환경
  • 기본 Interpreter + Project 종류별 Package 설치
    ex) Web Project, Data Analysis Project
    각각 Package 관리할 수 있는 기능
  • 다양한 Package 관리 도구를 사용

대표적인 도구 Virtualenv와 Conda가 있음

Conda Virtual Environment

conda create -n my_project python=3.8
  • conda create : Virtual Environment 새로 만들기
  • -n my_project : Virtual Environment 이름
  • python=3.8 : Python Version

Virtual Environment 호출과 해제

conda activate my_project
conda deactivate

Package Install

# conda install <Package Name>
conda install matplotlib

Windows > conda
Linux, Mac > pip

Conda Virtual Environment Example : Matplotlib을 활용한 Graph Visualize

  • 대표적인 Python Graph Management Package
  • Excell과 같은 Graph들을 화면에 표시
  • 다양한 Data 분석 도구들과 함께 사용 ex) conda install tqdm
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)

0개의 댓글