티스토리 뷰

AI/Python

[python] 모듈과 프로젝트

brave_sol 2024. 6. 17. 23:03

[1] 모듈과 패키지

(1) 모듈 : 어떤 대상의 부분 혹은 조각(작은 프로그램 조각들)

- 프로그램 모듈화 시키면 다른 프로그램을 이용하기 쉬움

- 예시: API, Random(Built-in Module)

- 파이썬의 모듈 == .py파일

- 사용: 같은 폴더에 .py파일(모듈)저장 후 import문 사용해서 모듈을 호출, 사용은 모둘명.함수명(파라미터)

같은 폴더 내
파일1: fah_converter.py 파일2: app.py
def convert_c_to_f(cel_value):
  return cel_value * 9.0 / 5 + 32

test1 = "GGG"
print(test1)

if __name__ == '__main__':
  test2 = "HHHH"
  print(test2)
import fah_converter # GGG출력, 방지위해 if __name__필요

print(fah_converter.convert_c_to_f(42.5)) # 108.5

=> HHHH는 출력안됨!

*실행 => __pycache__ 폴더 생성됨
컴파일된 파일, 코드를 쉽게 호출 할 수 있도록 기계어로 번역

 

(2) 사용법

호출 사용
import 모듈명

import 모듈명 as 별명
모듈명.함수/클래스명(매개변수)
=> 어디서 혼 함수인지 알 수 있어서 좋음
from 모듈명 import 함수/클래스명
# 특정 함수/클래스명만 가져옴

from 모듈명 import *
# 모든 함수/클래스 가져온다는 뜻
함수명(매개변수) 바로사용 가능
=> But 어디서 혼 함수인지 알기 어려워
모듈명.함수/클래스명(매개변수) 사용 권장

 

(3) Built-in Module

호출 사용
난수 : import random print(random.randint(1,100)) # 23
시간 : import time print(time.localtime())
# time.struct_time(tm_year=2024, tm_mon=6, tm_mday=17, tm_hour=9, tm_min=31, tm_sec=37, tm_wday=0, tm_yday=169, tm_isdst=1)
웹 : import urllib.request response = urllib.request.urlopen("http://thetemlab.io")
print(response.read())

 

[2] 패키지 => 패키지를 공유하면 프로젝트

- 하나의 대형 프로젝트를 만드는 코드의 묶음

- 다양한 모듈들의 합, 폴더로 연결됨 => 폴더자체를 실행시킬 수 있음

- 폴더별로 __init__.py 구성: 현재 폴더가 패키지임을 알리는 초기화 스크립트

- 다양한 오픈 소스들이 모두 패키지로 관리됨

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

: . 현재 디렉토리 기준, .. 부모 디렉토리 기준

예) 절대참조 from game.graphic.render import render_test()

      상대참조 from .render import render_test() 

- 패키지 만드는 법: 

폴더생성 하위폴더 폴더 내 파일 파일 내 코드
game   __init__.py __all__ = ["image","sound","stage"] # 앞으로 사용할 모듈명

from . import image
from . import sound
from . import stage
  __main__.py from sound import echo

if __main__ == '__main__':
  print("Hello Game")
  print(echo.echo_play())
image __init__.py __all__ = ["character","object_type"] # 앞으로 사용할 모듈명

from . import character
from . import object_type
 character.py  
 object_type.py  
sound __init__.py __all__ = ["echo","bgm"] # 앞으로 사용할 모듈명

from . import echo
from . import bgm
echo.py def echo_play():
  return "Hello Echo"
bgm.py  
stage __init__.py __all__ = ["main","sub"] # 앞으로 사용할 모듈명

from . import main
from . import sub
main.py  
sub.py  

 

[3] 오픈소스 라이브러리

- 가상환경 설정하기(패키지 여러개 설치할 때 충돌 방지)

: 필요한 패키지만 설치하는 환경(기본 인터프리터 + 프로젝트 종류별 패키지 설치)

- 패키지 관리도구 : virtualenv(레퍼런스+패키지개수, pip로 설치가능)와 conda(윈도우에서 장점) 많이 씀

 

 


※ 출처 : 네이버 부스트코스 - 인공지능 기초 다지기(https://www.boostcourse.org/ai100)

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함