본문 바로가기
지식공학/Python

Python 독학 기본편 #11. Module

by Eric87 2020. 11. 3.
반응형

안녕하세요 이번에 배워 볼 파이썬 내용은 모듈(module)입니다. 모듈의 개념은 이전에 배운 클래스(Class)와 비슷하나 module이 약간 더 큰 개념입니다. 클래스의 경우, 본인지 작성한 파일 내에서 class로 함수를 묶어 자유롭게 호출하여 그 함수를 사용할 수 있었습니다. 하지만 모듈은 다른 파일에서 사용했던 함수를 내가 작성하고 있는 파일로 호출하여 사용할 수 있습니다. 아직은 초보자는 많은 함수를 사용하지 않지만 나중에 본인이 직접 작성한 함수의 크기 클 경우 파일을 따로 만들어 작성을 하고 간단하게 함수를 호출하여 사용할 수 있습니다. 그럼 모듈의 개념을 확실히 알기 위해 다음의 예시를 보도록 하겠습니다.

참고로 이번 예제는 저번 포스팅에서 알려준 대로 repl.it이라는 웹상에서 파이썬을 실행하도록 하겠습니다. repl.it이 무엇인지 모르시는 분은 아래 링크를 참고하시길 바랍니다.

https://ericlab.tistory.com/55?category=814903

 

설치가 필요없는 통합 개발 환경(repl.it)

소프트웨어 개발자들은 어떤 프로그램을 사용하는지 궁금해졌습니다. 그래서 조금 찾아 보았는데 2020년 3분기 개발자 현황 설문조사에 다음과 같은 결과가 나왔습니다. 가장 많이 사용 중인 자

ericlab.tistory.com

요즘 코로나 때문에 극장을 가는 걸 꺼리는데 극장 관련 예시를 들도록 하겠습니다. 우선 새 파일을 하나 만들고 이름을 theater_module이라고 하겠습니다. 그리고 극장 가격을 작성을 할 건데 보통 애매 금액이 10,000원, 조조할인은 6,000원, 군인 할인은 4,000원이라고 하겠습니다.

def price(people):
print("{0}명 가격은 {1}원 입니다".format(people,people*10000))

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

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

다시 메인 파일로 돌아갑니다. 외부에 있는 모듈을 불러들이기 위해 import라는 명령어를 사용합니다. import 다음에 불러 읽을 파일의 제목을 알려주어야 합니다. theater_module이라고 했으므로 제목을 적고 함수를 불러와 사용하면 됩니다.

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

소괄호 안에 있는 숫자는 사람 수이기 때문에 총금액이 나오는 것을 확인할 수 있습니다.

그런데 함수를 사용하려면 함수 앞에 theater_module을 작성해줘야 하는 것이 너무 귀찮습니다. 좀 더 간편하게 함수를 사용하려면 as를 이용해서 module의 이름을 원하는 명칭으로 재 설정할 수 있습니다. 저는 theater_module을 mv로 해보았습니다.

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

결과 값은 동일한 것으로 확인됩니다. 이처럼 module의 길이가 길면 다음과 같이 축약하여 함수를 호출할 수 있습니다. 다른 방법으로는 from을 사용해도 됩니다. from으로 파일을 불러와서 import로 함수를 가져오는 방법입니다.

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

이렇게 하면 theater_module의 모든 함수를 불러오는 것이 되므로 각 함수만 사용하면 바로 계산이 가능합니다.

만약에 module내의 특정한 함수만 불러오고 있으면 import * 대신에 import price, price_morning이라고 쓰면 언급한 함수만 가져와 사용을 하고 이외 다른 함수는 정의가 되지 않아 사용할 수 없게 됩니다.

반응형

댓글