Module and Project

2022. 12. 27. 08:49BOOTCAMP/boostcamp AI Tech Pre-Course

모듈과 패키지

Module overview

  • 어떤 대상의 부분 혹은 조각

예) 레고 블록, 벽돌, 자동차 부품들

  • 프로그램에서는 작은 프로그램 조각들, 모듈들을 모아서 하나의 큰 프로그램을 개발함
  • 프로그램을 모듈화 시키면 다른 프로그램이 사용하기 쉬움

예) 카카오톡 게임을 위한 카카오톡 접속 모듈

 

모듈 (Module) in Python

  • Built-in Module인 Random을 사용, 난수를 쉽게 생성할 수 있음
import random
random.randint(1, 1000)
331

random.randint(1, 1000)
543

random.randint(1, 1000)
664

random.randint(1, 1000)
727

패키지

  • 모듈을 모아놓은 단위, 하나의 프로그램
  • 직접 구현을 해봐야 알 수 있음

모듈

Module 만들기

  • 파이썬의 Module == py 파일을 의미
  • 같은 폴더에 Module에 해당하는. py파일과 사용하는. py을 저장한 후
  • import문을 사용해서 module을 호출

fah_converter.py

def covert_c_to_f(celcius_value):
    return celcius_value * 9.0 / 5 + 32

module_ex.py

import fah_converter

print("Enter a celsius value: "),
celsius = float(input())
fahrenheit = fah converter.covert c to f(celsius)
print ("That's", fahrenheit, " degrees Fahrenheit")

namespace

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

namespace example

Alias 설명하기 = 모듈명을 별칭으로 써서

import fah_converter as fah     # fah_converter를 fah라는 이름으로
print(fah.convert_c_to_f(41.6)) # 그 안에 covert_c_to_f 함수를 쓴다

모듈에서 특정 함수 또는 클래스만 호출하기

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

모듈에서 모든 함수 또는 클래스를 호출하기

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

Built-in Modules

  • 파이썬이 기본 제공하는 라이브러리
  • 문자처리, 웹, 수학 등 다양한 모듈이 제공됨
  • 별다른 조치없이 import문으로 활용 가능
#난수
import random
print(random.randint (0,100))   # 0~100사이의 정수 난수를 생성
print(random.random())  # 일반적인 난수생성
80
0.659741947343163

#시간
import time
print(time.localtime()) # 현재 시간 출력
time.struct_time(tm_year=2022, tm_mon=12, tm_mday=26, tm_hour=2, tm_min=17, tm_sec=19, tm_wday=0, tm_yday=360, tm_isdst=0)

# 웹
import urllib.request
response = urllib.request.urlopen("http://highllight.tstory.com")
print(response.read())
b'<html>\r\n<head>\r\n<meta name="robots" content="noarchive" />\r\n<meta name="googlebot" content="nosnippet" />\r\n</head>\r\n<body>\r\n<div align=center>\r\n<h3>Error. Page cannot be displayed. Please contact your service provider for more details.  (32)</h3>\r\n</div>\r\n</body>\r\n</html>'

패키지

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 구성하기

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

from. import image
from. import stage
from. import sound

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()

[참고] package namespace

package 내에서 다른 폴더의 모듈을 부를 때 상대 참조로 호출하는 방법

from game.graphic.render import render_test   # 절대참조
from .render import render_test      # 현재 디렉토리 기준
from ..sound.echo import echo_test    # 부모 디렉토리 기준

가상환경 설정하기

Virtual Environment

 

Python Virtual Environment Overview

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

 

conda 가상환경 예시

matplotlib 활용한 그래프 표시

  • 대표적인 파이썬 그래프 관리 패키지
  • 엑셀과 같은 그래프들을 화면에 표시함
  • 다양한 데이터 분석 도구들과 함께 사용됨

'BOOTCAMP > boostcamp AI Tech Pre-Course' 카테고리의 다른 글

선형독립과 선형종속  (0) 2023.01.01
선형방정식과 선형시스템  (0) 2022.12.29
Mathematics for Artificial Intelligence  (0) 2022.12.28
Numerical Python - numpy  (0) 2022.12.28
File / Exception / Log Handling  (0) 2022.12.27