파이썬 강좌(초급)/10.모듈과 패키지

10.모듈과 패키지 - 1) 모듈

파기차차 2024. 4. 14. 11:46
728x90
반응형
SMALL

 

 

1) 모듈이 뭐에요?

  • 모듈은 파이썬 코드를 담고 있는 파일(.py)입니다.
  • 모듈은 함수, 클래스, 변수 등을 포함할 수 있습니다.
  • 다른 파이썬 스크립트에서 import 문을 사용하여 모듈을 가져와 사용할 수 있습니다.
  • 모듈은 코드를 구조화하고 관련 기능을 논리적으로 분리하여 재사용성을 높이는데 도움을 줍니다.

 

아래 my_module.py라는 파일을 만들고 greet()함수를 정의하였습니다.

이를 사용하려면 main.py 파일에서 위에서 만든 모듈을 임포트(import my_module, ".py"는 제외) 해주면

모듈 + "."(점)으로 함수에 접근할 수 있습니다.(my_module.greet())

# my_module.py
def greet(name):
    print(f"Hello, {name}!")
 
# main.py
import my_module
 
my_module.greet("Alice")

 

 

아래와 같은 모듈(파이썬 파일)이 있습니다.

theater_module.py

def price(people):
    print(people, "명의 일반 영화표 가격은 "+str(people*10000)+"원입니다.")
 
def price_morning(people):
    print(people, "명의 조조할인 영화표 가격은 "+str(people*6000)+"원입니다.")
 
def price_soldier(people):
    print(people, "명의 군인 할인 영화표 가격은 "+str(people*4000)+"원입니다.")
 

 

 

위 모듈을 사용하려면 아래와 같이 임포트 해주고, 사용할 수 있습니다.

 

main.py

import theater_module
theater_module.price(3)
theater_module.price_morning(4)
theater_module.price_soldier(5)
 

3 명의 일반 영화표 가격은 30000원입니다.

4 명의 조조할인 영화표 가격은 24000원입니다.

5 명의 군인 할인 영화표 가격은 20000원입니다.

 

 

모듈명이 긴 경우 별명(예: mv)을 붙여서 짧게 사용 가능합니다.

import theater_module as mv
mv.price(3)
mv.price_morning(4)
mv.price_soldier(5)
 

3 명의 일반 영화표 가격은 30000원입니다.

4 명의 조조할인 영화표 가격은 24000원입니다.

5 명의 군인 할인 영화표 가격은 20000원입니다.

 

 

아래와 같이 "*"를 사용하면 모듈명을 사용하지 않고, 바로 함수에 접근할 수 있습니다.

from theater_module import *
price(3)
price_morning(4)
price_soldier(5)
 

3 명의 일반 영화표 가격은 30000원입니다.

4 명의 조조할인 영화표 가격은 24000원입니다.

5 명의 군인 할인 영화표 가격은 20000원입니다.

 

 

 모듈의 특정 함수만 사용하게 하려면 아래와 같이 사용하려는 함수만 임포트 해줍니다.

from theater_module import price, price_morning
price(3)
price_morning(4)
price_soldier(5)
 

NameError: name 'price_soldier' is not defined

위와 같이 에러가 발생한 이유는 임포트를 price, price_morning 2개만 해주었는데, 임포트 해주지 않은 price_soldier()을 사용하려 했기 때문입니다.

 

 

아래와 같이 모듈의 특정 함수도 별명을 사용하여 지정할 수 있습니다.

아래의 경우에는 별명을 price로 주었으나 실제 사용하려는 함수는 price_soldier() 이므로 "price(5)" 코딩 시

theater_module.py파일에서 군인 할인 영화표에 해당 하는 가격정보가 출력됩니다.

from theater_module import price_soldier as price
price(5)
 

5 명의 군인 할인 영화표 가격은 20000원입니다.

 

 

 

 

2) 실습

 

 

 

(1) 아래 코드에서 main.py에서 module_example.py 모듈의 hello()함수를 사용하려 합니다.

main.py 파일의 코드를 작성해 보세요

# module_example.py
def hello():
    print("Hello, this is a module function!")

# main.py

 

모범답안

더보기
# module_example.py
def hello():
    print("Hello, this is a module function!")

# main.py
import module_example
module_example.hello()

 

 

 

(2) 모듈을 import할 때 이름 충돌이 발생하면 어떻게 해결할 수 있나요?

 

모범답안

더보기
# 모듈을 별칭(alias)으로 import하면 이름 충동을 해결할 수 있습니다.
import module_example as mod
mod.hello()

 

 

 

insa.py

def good_morning():
    print("안녕, 좋은 아침이야")
 
def good_afternoon():
    print("안녕, 좋은 오후이야")
 
def good_evening():
    print("안녕, 좋은 밤이야")

 

 

 

 

(3) 위의 insa.py에서 good_morning()함수만 임포트 하려면 어떻게 해야 하는지 코드로 작성해 보세요.

 

모범답안

더보기
# 모듈의 특정 함수만 import하는 예제
from insa import good_morning
good_morning()

 

728x90
반응형
LIST