(나도코딩의 파이썬 입문) 11장. 모듈과 패키지(p.353~362)

2023. 3. 14. 00:33독서

반응형

안녕하세요!
<코딩 자율학습 나도코딩의 파이썬 입문> 멘토를 담당하게 된 이안입니다.

오늘은 11장 '모듈과 패키지'에 대해 학습할게요.

오늘 공부할 내용은 다음과 같습니다.

🧐 공부할 내용(p.353~362)
* 모듈 다루기

* 패키지 다루기

 

 

1.  모듈 다루기

 

파이썬에서는 서로 관련이 있거나 비슷한 기능을 하는 함수, 클래스 등을 담고 있는 파일을 제공하는데 이를 모듈이라고 합니다.

 

그리고 프로그램의 기능을 독립적인 작은 단위로 나누는 작업을 모듈화라고 합니다.

 

모듈화가 왜 필요할까요?

 

좋은 프로그램을 작성하는 조건 중 하나는 '재사용성'을 높이는 것입니다.

 

모듈화가 되어 있지 않고 같은 코드가 여러 파이썬 파일에 산재되어 있다며 어떨까요?

 

코드가 전혀 재사용되지 않기 때문에 파일의 용량이 늘어나고, 

변경 사항이 생길 때마다 모든 부분에 대해서 바꿔줘야 하는 불상사가 생깁니다.

 

 

그렇기 때문에 모듈화는 중요합니다.

 

 

책을 따라서 모듈을 만들고 사용해 봅시다.

 

def price(people):
    print(f"{people}명, 영화표 가격은 {people * 10000}원 입니다.")

def price_morning(people):
    print(f"{people}명, 조조 할인 가격은 {people * 6000}원 입니다.")

def price_soldier(people):
    print(f"{people}명, 군인 할인 가격은 {people * 4000}원 입니다.")

 

이렇게 theater_module.py를 만들었습니다.

 

 

ch11.py 파일을 만들고 모듈을 호출해 봅시다.

 

 

import theater_module

theater_module.price(3) # 3명이서 영화 보러 갔을 때 가격
theater_module.price_morning(4) # 4명 조조 할인 영화 보러 갔을 때
theater_module.price_soldier(5) # 5명 군인 할인 영화 보러 갔을 때

 

import는 math, random 등의 모듈을 호출할 때와 같은 방식으로 호출합니다.

 

그래서 아래처럼 다양한 방식으로 사용할 수 있죠.

 

import theater_module

from theater_module import * 

from theater_module import price

 

 

2.  패키지 다루기

패키지 사용에 대한 것은 책에 자세하게 나오기 때문에 패키지 사용에 대한 것은 제가 따로 설명하지는 않겠습니다.

 

다만 패키지가 어떤 것인지, 왜 필요한지에 대해서 보충 설명을 하겠습니다.

 

패키지는 하나의 디렉토리에 있는 모듈의 집합입니다.

 

이런 이미지로 쉽게 이해가 가능합니다.

 

 

source from: http://pythonstudy.xyz/python/article/18-%ED%8C%A8%ED%82%A4%EC%A7%80

 

왜 패키지를 사용할까요? 모듈을 여러 개 만들면 되지 않을까요?

 

패키지를 사용하면 계층적으로 카테고리로 묶어서 관리를 할 수 있습니다. 그렇기에 더욱 효율적이죠.

 

 

__init__. py는 파이썬 3.3 이상에서는 꼭 필요하지 않습니다.

없어도 패키지로 인식이 가능하기 때문이죠.

 

하지만 __init__. py는 특별한 역할을 하는데요, 바로 패키지는 초기화화는 파이썬 코드를 넣을 수 있습니다.

 

예를 들면 이런 코드를 작성할 수 있습니다.

 

 

# __init__.py

from travel.thailand import ThailandPackage
from travel.vietnam import VietnamPackage

th = ThailandPackage()
vn = VietnamPackage()



# ch11.py

from travel import th
from travel import vn

th.detail()
vn.detail()

__init__. py에 미리 초기화된 변수 th와 vn을 만듭니다.

 

그리고 ch11.py파일에서는 초기화된 변수를 가져와 사용만 하면 되는 것이죠.

 

이 방식을 사용하면 어떤 장점이 있을까요?

 

 

책의 예제처럼 ch11.py에서 ThailandPackage() 혹은 VietnamPackage() 생성자를 사용해서 호출하지 않아도 됩니다.

이 덕분에 우리는 변수를 매번 만들지 않아도 되죠.

 

즉, 재사용 가능한 코드가 됩니다.

 

 

이렇게 __init__. py를 잘 활용하면 코드의 양을 줄일 수도 있고 재사용 가능한 코드도 작성할 수 있습니다.

 


이번 시간에는 모듈과 패키지에 대해서 간략하게 알아봤어요.

1분 퀴즈로 복습하면서 익혀주세요~

 

공부하시다 궁금하신 점이 있다면 댓글 남겨주세요~

 

 

✅ 정리

* 모듈 다루기

* 패키지 다루기

반응형