728x90
반응형
모듈화하기
모듈(Module)이란?
모듈(Module)은 변수, 함수, 클래스, 또 다른 모듈은 포함하는 파이썬 파일을 의미한다.
간단하게 말해서 그냥 .py 파일이다. 남이 만든 모듈 또는 내가 만든 모듈을 활용하기 위해서, 모듈을 잘 가지고 놀 줄 알아야 한다.
Calculator 모듈 만들기
우선 calculator 모듈을 만들어보자.
# calculator.py
def add(a, b):
return a + b
def sub(a, b):
return a - b
def mul(a, b):
return a * b
def div(a, b):
return a / b
add, sub, mul, div 함수가 정의되어있다.
Calculator 모듈 불러오기(Import)
Import 3가지 방법
1. 모듈 불러오기
import calculator
2. 모듈 내의 함수 불러오기
from calculator import add, sub, mul, div
3. 모듈 내의 함수 전부 불러오기
from calculator import *
- 예제1
# main.py
import calculator
print(calculator.add(1,2))
print(calculator.sub(1,2))
print(calculator.mul(1,2))
print(calculator.div(1,2))
- 예제2
# main.py
from calculator import *
print(add(1,2))
print(sub(1,2))
print(mul(1,2))
print(div(1,2))
- 결과
3
-1
2
0.5
__name__
__name__는 파이썬이 내부적으로 사용하는 특별한 변수 이름이다.
해당 모듈에서 실행되는 경우, __name__에는 __main__이 저장된다.
다른 모듈에서 실행되는 경우, __name__에는 __모듈 이름__이 저장된다.
- 예제
# calculator.py
def add(a, b):
return a + b
def sub(a, b):
return a - b
def mul(a, b):
return a * b
def div(a, b):
return a / b
print(__name__)
# main.py
from calculator import *
print(add(1,2))
print(sub(1,2))
print(mul(1,2))
print(div(1,2))
print(__name__)
- 결과
calculator
3
-1
2
0.5
__main__
__name__을 사용하는 이유
현재 모듈이 시작점(메인 프로그램)인지 아니면 모듈로 사용되는 것인지 파악하기 위해 사용한다.
- 장점
다른 모듈에서 해당 모듈을 import 할 때 발생할 수 있는 부작용을 방지할 수 있다.
if __name__ == "__main__":구문을 활용하여, 해당 모듈을 직접 실행할 때만 테스트 코드가 실행되도록 할 수 있다.
- 예제
# calculator.py
def add(a, b):
return a + b
def sub(a, b):
return a - b
def mul(a, b):
return a * b
def div(a, b):
return a / b
if __name__ == "__main__":
print("calculator.py가 직접 실행되었으니 주의하시길 바랍니다.")
else:
print("calculator.py가 import되었습니다.")
# main.py
from calculator import *
print(add(1,2))
print(sub(1,2))
print(mul(1,2))
print(div(1,2))
- 결과
- main.py에서 실행한 경우
calculator.py가 import되었습니다.
3
-1
2
0.5 - calculator.py에서 실행한 경우
calculator.py가 직접 실행되었으니 주의하시길 바랍니다.
728x90
반응형
'Software > Python' 카테고리의 다른 글
[판다스(Pandas)] 1. 시리즈(Series) (0) | 2023.11.13 |
---|---|
[Pycharm] 파이참에서 터미널 (powershell -> cmd) 변경하기 (0) | 2023.11.13 |
SSL Error 해결 (0) | 2023.11.11 |
모듈 vs. 패키지 vs. 라이브러리 (0) | 2023.11.11 |
[웹스크래핑] Selenium(셀레니움) 기본 코드 (0) | 2023.01.30 |
댓글