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()
'파이썬 강좌(초급) > 10.모듈과 패키지' 카테고리의 다른 글
10.모듈과 패키지 - 6) 패키지 및 모듈 설치 (pip install ~~~) (0) | 2024.05.04 |
---|---|
10.모듈과 패키지 - 5) 패키지 및 모듈 위치 찾기 (0) | 2024.05.04 |
10.모듈과 패키지 - 4) if __name__ == "__main__": (0) | 2024.05.04 |
10.모듈과 패키지 - 3) __all__ 변수 (0) | 2024.04.14 |
10.모듈과 패키지 - 2) 패키지 (0) | 2024.04.14 |