모듈이란 함수나 변수 또는 클래스를 모아 놓은 파일이다.
모듈은 다른 파이썬 프로그램에서 불러와 사용할 수 있게끔 만든 파이썬 파일이라고도 할 수 있다.
모듈 만들기
# C:\doit\mod1.py
def add(a,b):
return a + b
def sub(a,b):
return a - b
모듈 불러오기
>>> import mod1 # mod1.py 를 가져와라
>>> print(mod1.add(3,4)) # mod1.py 에 있는 def add(a,b)에 값을 넣고 출력하라
7
>>> print(mod1.sub(4,2))
2
# import 모듈이름 # 여기에서 모듈 이름은 mod1.py 에서 .py를 제거한 mod1만을 가리킨다.
# 때로는 mod1.add, mod1.sub 처럼 쓰지 않고 add, sub 처럼 모듈 이름 없이 함수 이름만 쓰고 싶은
# 경우도 있을 것이다. 이럴 때는 "from 모듈 이름 import 모듈 함수" 를 사용하면 된다.
※ import는 현재 디렉터리에 있는 파일이나 파이썬 라이브러리가 저장된 디렉터리에 있는 모듈만 불러올 수 있다.
파이썬 라이브러리는 파이썬을 설치할 때 자동으로 설치되는 파이썬 모듈을 말한다.
from 모듈이름 import 모듈함수
위 형식을 사용하면 모듈 이름을 붙이지 않고 바로 해당 모듈 함수를 쓸 수 있다.
>>> from mod1 import add
>>> add(3, 4)
7
하지만 add와 sub를 같이 사용하고 싶으면 어떻게 해야될까?
>>>from mod1 import add, sub와 같이 설정해주거나
>>>from mod1 import * 해주면 된다.
if __name__ "__main__": 의 의미
# mod1.py
def add(a,b):
return a+b
def sub(a,b):
return a-b
print(add(1,4))
print(sub(4,2))
mod1 을 실행하면 결과는
5
2
가 출력된다, 그런데 이 mod1.py 파일의 add와 sub 함수를 사용하기 위해 mopd1 모듈을
import 할 때는 좀 이상한 문제가 생긴다.
C:\Users\pahkey> cd C:\doit
C:\doit> python
Type "help", "copyright", "credits" or "license" for more information.
>>> import mod1
5
2
엉뚱하게도 import mod1을 수행하는 순간 mod1.py 가 실행이 되어 결과값을 출력한다.
우리는 단지 mod1.py 파일의 add와 sub 함수만 사용하려고 했는데 말이다
이러한 문제를 방지하려면 mod1.py 파일을 다음처럼 변경해야 한다.
# mod1.py
def add(a, b):
return a+b
def sub(a, b):
return a-b
if __name__ == "__main__":
print(add(1, 4))
print(sub(4, 2))
if __name__ == "__main__"을 사용하면 C:\doit>python mod1.py 처럼 직접 이 파일을 실행했을 때는
__name__ == "__main__" 이 참이 되어 if문 다음 문장이 수행된다. 반대로 대화형 인터프리터나 다른 파일에서 이 모듈을 불러 사용할 때는 거짓이 되어 if문 다음 문장이 수행되지 않는다.
[__name__] 변수란?
파이썬이 내부적으로 사용하는 특별한 변수 이름이다. 만약 python mod1.py 처럼 직접 mod1.py 파일을 실행할 경우 mod1.py 의 __name__ 변수에는 __main__ 값이 저장된다. 하지만 파이썬 셸이나 다른 파이썬 모듈에서 mod1을 import 할 경우에는 mod1.py 의 __name__ 변수에는 mod1.py 의 모듈 이름 값 mod1 이 저장된다.
'Language > Python' 카테고리의 다른 글
| 점프 투 파이썬 - 예외처리 (0) | 2019.07.15 |
|---|---|
| 점프 투 파이썬 - 패키지 (0) | 2019.07.15 |
| 점프 투 파이썬 - 클래스 (0) | 2019.07.12 |
| 점프 투 파이썬 - 사용자 입력과 출력, 파일 읽고 쓰기 (0) | 2019.07.12 |
| 점프 투 파이썬 - 함수★★ (0) | 2019.07.09 |
댓글