본문 바로가기
Software/Python

모듈화하기

by 리미와감자 2023. 11. 12.

모듈화하기


모듈(Module)이란?

 

 

모듈(Module)은 변수, 함수, 클래스, 또 다른 모듈은 포함하는 파이썬 파일을 의미한다.

 

 

[Python] 모듈 vs. 패키지 vs. 라이브러리

모듈, 패키지, 라이브러리의 차이는? 모듈(Module)은 변수, 함수, 클래스, 또 다른 모듈은 포함하는 파이썬 파일을 의미한다. 패키지(Package)는 모듈의 집합이다. 특정 기능과 관련된 여러 모듈을 한

rimeestore.tistory.com

 

간단하게 말해서 그냥 .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)

 

main.py에서 calculator.py 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))

 

  • 결과
  1. main.py에서 실행한 경우

    calculator.py가 import되었습니다.
    3
    -1
    2
    0.5

  2. calculator.py에서 실행한 경우

    calculator.py가 직접 실행되었으니 주의하시길 바랍니다.

 

댓글