02 모듈
- 모듈이란 함수나 변수 또는 클래스를 모아놓은 파일이다.
- 다른 사람의 모듈을 사용할 수도, 직접 만들 수도 있다.
- 파이썬 확장자. py로 만든 파이썬 파일은 모두 모듈이다.
02-1 모듈 만들고 실행하기
#mod1.py
def add(a, b):
return a + b
def sub(a, b):
return a - b
add와 sub 함수만 있는 파일 mod1.py를 만들었다.
- 실행을 위해 명령프롬프트(cmd)를 열었다.
- cmd에서 mod1.py가 있는 폴더로 이동한 뒤 python을 입력해 대화형 인터프리터를 실행했다.
- import 명령어로 모듈을 불러온 뒤 함수를 실행하니 값이 잘 출력되었다.
*cmd에서 python을 입력해 대화형 인터프리터를 실행하는 것이다. 헷갈리지 말자.
*import 명령어를 쓸 때에는 모듈명 뒤에. py를 붙이지 않는다.
*import 명령어는 현재 디렉터리에 있는 파일이나 파이썬 라이브러리가 저장된 디렉터리에 있는 모듈만 불러올 수 있다.
모듈 이름을 붙이지 않고 바로 함수를 사용하고 싶을 땐 위 코드와 같이 사용한다.
*정규 표현식에서 배울 것이지만 * 문자는 '모든 것'이라는 의미이다.
02-2 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 모듈에 값을 출력하는 코드를 추가해 저장해보자.
cmd에서 파일을 열어보니 값이 값이 출력되는 것을 확인할 수 있었다.
python 명령어로 대화형 인터프리터 모드에 들어갔다. 그리고 앞에서처럼 import함수로 모듈을 불러왔다.
그런데 이번에도 결괏값이 출력되었다. 출력 없이 add와 sub 함수만 사용하고 싶을 땐 어떻게 해야 할까.
#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__":을 추가했다.
- python mod1.py처럼 파일을 직접 실행했을 땐 __name__ == "__main__"이 참이 되어 if문 다음 문장이 수행된다.
- 대화형 인터프리터나 다른 파일에서 모듈을 사용할 땐 __name__ == "__main__"이 거짓이 되어 if문 다음 문장이 수행되지 않는다.
*import를 사용하는 경우 mod1.py의 __name__변수에는 모듈 이름값 mod1이 저장된다.
대화형 인터프리터에서 모듈을 실행하니 이번에는 값이 출력되지 않았다.
02-3 클래스와 변수 등을 포함한 모듈
모듈에는 함수뿐만 아니라 클래스나 변수 등을 포함할 수 있다.
#mod2.py
PI = 3.141592
class Math:
def solv(self, r):
return PI * (r ** 2)
def add(a, b):
return a + b
원 넓이를 계산하는 Math클래스와 두 개의 값을 더하는 add함수, PI변수를 포함하는 모듈을 만들었다.
대화형 인터프리터에서 실행하니 결괏값이 잘 출력되었다.
02-4 다른 파일에서 모듈 불러오기
#modtest.py
import mod2
result = mod2.add(3,4)
print(result)
파이썬 에디터에서 modtest.py파일을 위와 같이 작성하고 실행했다. mod2.py의 함수가 사용된 것을 확인할 수 있었다.
*예제가 정상적으로 실행되기 위해서는 modtest.py와 mod2.py가 동일한 디렉터리 안에 있어야 한다.
모듈을 불러오는 다른 방법에 대해서도 알아보자.
우선 cmd에서 이전에 만든 모듈을 새로운 디렉터리 mymod(mkdir 명령어 사용)로 이동시켰다.
1) sys.path.append(모듈을 저장한 디렉터리) 사용하기
모듈이 저장된 디렉터리가 아닌 다른 곳에서 모듈을 사용해보자.
sys 모듈을 사용하기 전의 모습이다. import mod2명령어를 사용하니 mod2가 없다는 에러가 발생했다.
- import 명령어를 사용해 sys 모듈을 불러왔다.
- sys 모듈은 파이썬을 설치할 때 함께 설치되는 라이브러리 모듈이다.
- sys 모듈을 사용하면 파이썬 라이브러리가 설치되어있는 디렉터리를 확인할 수 있다.
- 즉 sys.path에 원하는 디렉터리 경로를 추가하면 아무 곳에서나 모듈을 불러 사용할 수 있다.
- sys.path의 결괏값이 리스트기 때문에 append함수를 사용해 mod2 모듈의 경로를 추가했다.
*명령 프롬프트 창에서는 \,/든 상관없지만 소스 코드 안에서는 반드시 \\또는 /를 사용해야 한다. 그렇지 않으면 아래처럼 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape에러가 발생한다.
2) PYTHONPATH 환경 변수 사용하기
위 코드와 같이 set PYTHONPATH=경로를 사용해서도 모듈을 불러올 수 있다.
이 글은 책 『Do it! 점프 투 파이썬』을 읽은 후 작성한 글입니다.
'Programming > Python' 카테고리의 다른 글
Do it! 공부단 7일차 | ch05 파이썬 날개달기_예외 처리 (0) | 2021.03.23 |
---|---|
Do it! 공부단 6일차 | ch05 파이썬 날개달기_패키지 (0) | 2021.03.22 |
Do it! 공부단 5일차 | ch05 파이썬 날개달기_클래스 (0) | 2021.03.18 |
Do it! 공부단 4일차 | ch04 프로그램의 입력과 출력_사용자 입출력과 파일 (0) | 2021.03.10 |
Do it! 공부단 4일차 | ch04 프로그램의 입력과 출력_함수 (0) | 2021.03.10 |