[python] 모듈(module)

개발을 할 때 중복되는 코드를 작성한다면 관리가 힘들어지게 됩니다.
파이썬에서는 이러한 경우에 모듈 또는 패키지로 만들면 사용과 관리가 용이해집니다.
모듈과 패키지는 기능별로 나눈다는 점에선 공통된 역할을 하고, 모듈이 특정 작업과 관련된 내용을 담는다고 하면, 패키지는 여러 모듈을 한 폴더에 관리하는 것을 말합니다.
이번 글에서는 모듈을 만들어보겠습니다.

간략 설명

모듈은 특정기능을 위해 만든 함수, 변수, 클래스를 .py파일 단위로 모아놓은 것을 말합니다.
이때까지 만들어온 모든 .py는 모듈로 볼 수 있습니다.

모듈 참조

모듈을 import 하려면 아래와 같이 사용하며 됩니다.

import 모듈
import 모듈 as 이름
from 모듈 import 함수, 변수, 클래스

예시

이전 클래스 예시인 자동차를 예시로 들어보겠습니다.
자동차에는 엔진도 들어가고, 핸들, 라디오 등등 여러가지 모듈들이 들어갑니다.
이와 비슷하게 개발할 때도 엔진, 핸들, 라디오 모듈을 샘플로 만들어 보겠습니다.

engine.py, handle.py, radio.py를 만들고 아래와 같이 입력해 줍니다.

# engine.py
def PowerOn():
    print("시동 ON")

def PowerOff():
    print("시동 OFF")

def accel():
    print("가속 합니다.")
    
def brake():
    print("감속합니다")
# handle.py
def turn_left():
    print("핸들을 왼쪽으로 꺽습니다.")

def turn_right():
    print("핸들을 오른쪽으로 꺽습니다.")
    
def honk():
    print("빵~")
# radio.py
def volume_up():
    print("라디오 소리가 커집니다.")

def volume_down():
    print("라디오 소리가 작아집니다.")

Car.py를 만들고 아래와 같이 모듈들을 import 해줍니다.

# Car.py
import engine
import handle
import radio

그리고 import 아래 부분에 Car 클래스를 만들어 줍니다.

# Car.py
class Car:
    # 엔진 관련
    def PowerOn(self):
        engine.PowerOn()
    
    def PowerOff(self):
        engine.PowerOff()
        
    def press_accel(self):
        engine.accel()
    
    def press_break(self):
        engine.brake()
    
    # 핸들 관련
    def turn_left_handle(self):
        handle.turn_left()

    def turn_right_handle(self):
        handle.turn_right()

    def honk_a_horn(self):
        handle.honk()
    
    # 라디오 관련
    def volume_up_radio(self):
        radio.volume_up()
    
    def volume_down_radio(self):
        radio.volume_down()

이제 실제로 Car 클래스에 대한 인스턴스를 만들어 사용해봅니다.

# Car.py
car1 = Car()
car1.PowerOn()
car1.press_accel()
car1.turn_left_handle()
car1.honk_a_horn()
car1.volume_up_radio()
car1.press_break()
car1.PowerOff()

만약에 다른 유형의 자동차 클래스를 만들 때 만들어놓은 엔진, 핸들, 라디오 모듈은 import해서 사용하기만 하면 됩니다.