모듈(Module)은 코드를 여러 개의 파일로 나누어 관리할 수 있게 해주는 파이썬의 핵심 기능입니다. 파이썬 모듈은 확장자가 .py로 끝나는 파일을 의미합니다.
이 글에서는 다양한 예제와 함께 파이썬 모듈을 만들고 활용하는 방법을 단계별로 알아보겠습니다.
파이썬 모듈 기본 개념
모듈은 쉽게 말해 하나의 파이썬 프로그램 파일입니다. 즉, 파이썬 프로젝트 내에서 .py 확장자로 끝나는 모든 파일은 모듈로 취급될 수 있습니다. 모듈 안에는 함수, 변수, 클래스를 정의할 수 있으며, 필요에 따라 다른 라이브러리를 가져와(import) 사용할 수도 있습니다.
파이썬 모듈은 크게 세 가지 유형으로 나눌 수 있습니다.
- 내장 모듈(Built-in Modules): 파이썬 표준 라이브러리에 포함되어 있어 별도 설치 없이 바로 사용할 수 있는 모듈입니다. 대표적인 예로
logging,time등이 있습니다. - 외부 모듈(External Modules): 파이썬의 패키지 관리 도구인 pip를 통해 설치한 모듈입니다.
- 사용자 정의 모듈(User-Defined Modules): 개발자가 직접 작성한 함수나 클래스를 담고 있는 모듈입니다.
모듈을 활용하면 코드의 가독성을 크게 높일 수 있습니다. 물론 프로그램 전체 코드를 한 파일에 몰아서 작성하는 것도 기술적으로는 가능하지만, 좋은 방법은 아닙니다. 수천 줄에 달하는 코드 속에서 수정해야 할 부분을 찾아내는 일은 매우 어렵기 때문입니다.
import 문의 동작 원리가 익숙하지 않다면, 관련 튜토리얼을 먼저 살펴보시는 것을 추천합니다.
파이썬 모듈 작성하기
이번에는 고객의 잔액을 관리하는 간단한 은행 프로그램을 만들어 보겠습니다.
먼저, 사용자를 은행 잔액 관리 시스템에 환영하는 메시지를 출력하는 함수를 작성합니다. 이 함수는 bank.py라는 파일에 저장하며, 이 파일이 곧 우리 은행 시스템의 코드가 되는 것입니다.
def welcome_message():
print("Welcome to Python Bank!")
이 파일만 실행하면 아무런 결과도 출력되지 않습니다. 함수를 호출하지 않았기 때문입니다. 실제로 코드를 사용하려면 프로그램의 메인 코드를 담을 새 파일 main.py를 만들어야 합니다.
import bank bank.welcome_message()
위 코드에서는 bank.py 파일로부터 bank 모듈을 가져온(import) 후, 해당 모듈 안에 있는 welcome_message() 함수를 호출했습니다. 실행 결과는 다음과 같습니다.
Welcome to Python Bank!
print() 구문은 bank.py 파일에 있지만, import 키워드를 사용하면 메인 프로그램에서 해당 코드를 불러와 실행할 수 있습니다. 이것이 파이썬에서 다른 파일의 코드를 실행하는 가장 기본적인 예이며, 모듈로 할 수 있는 일은 이보다 훨씬 많습니다.
모듈과 클래스 함께 사용하기
이번에는 은행 고객의 정보를 저장하는 클래스를 만들어 보겠습니다. 이 클래스 역시 메인 프로그램과 분리하기 위해 bank.py 파일에 정의합니다.
def welcome_message():
print("Welcome to Python Bank!")
class Customer:
def __init__(self, name, balance):
self.name = name
self.balance = balance
def show_customer(self):
print("Name: " + self.name)
print("Balance: $" + int(self.balance))
다시 main.py 파일로 돌아가 이 코드를 활용해 보겠습니다. Customer 클래스의 인스턴스를 생성하는 코드를 추가하고, 이 인스턴스에 신규 고객인 Lucy의 이름과 잔액을 저장합니다.
수정된 main.py 파일은 다음과 같습니다.
import bank
bank.welcome_message()
lucy = bank.Customer("Lucy", 75)
lucy.show_customer()
실행 결과는 다음과 같습니다.
Welcome to Python Bank!
Name: Lucy
Balance: $75
위 코드에서는 'lucy'라는 이름의 Customer 클래스 인스턴스를 선언했습니다. Lucy의 계좌는 이름이 'Lucy'이고 잔액은 75달러입니다.
주목할 점은 Customer 클래스의 코드가 메인 프로그램에 포함되어 있지 않다는 것입니다. 해당 코드는 bank.py 파일에 따로 저장되어 있으며, import 문 덕분에 bank.py 파일의 모든 코드를 가져와 우리 프로그램에서 자유롭게 사용할 수 있는 것입니다.
다른 폴더에서 모듈 가져오기
파이썬에서는 서로 다른 디렉터리에 저장된 모듈도 사용할 수 있습니다.
앞선 예제에서는 bank.py 모듈과 main.py 파일이 같은 폴더에 있었습니다. 프로그램 규모가 작다면 굳이 별도의 모듈 폴더를 만들 필요가 없기 때문입니다. 하지만 더 큰 프로그램을 개발할 때는 모듈을 별도의 폴더로 분류해 관리하는 것이 좋습니다.
이때 from 키워드를 사용하면 특정 폴더에서 모듈을 가져오도록 지정할 수 있습니다.
예를 들어 bank.py 모듈을 bank_details라는 폴더로 옮겼다고 가정해 보겠습니다. 이 경우 import 문을 'import bank'에서 다음과 같이 변경하면 됩니다.
from bank_details import bank
이렇게 하면 bank.py 파일의 내용을 프로그램으로 가져올 수 있습니다. from bank_details는 모듈을 어디서 찾아야 하는지 프로그램에 알려주는 역할을 하며, 이를 흔히 모듈 네임스페이스(module namespace)라고 부릅니다. 여기서 bank_details가 모듈 네임스페이스에 해당하며, 프로그램에서 사용하는 파이썬 코드를 담고 있는 위치를 가리킵니다.
마무리
결국 모듈을 작성하는 것과 일반 파이썬 파일을 작성하는 것 사이에는 차이가 없습니다. 모듈은 그저 하나의 파이썬 파일일 뿐입니다. 다만 import 문과 함께 사용하면 코드를 여러 파일로 나누어 체계적으로 관리할 수 있다는 점이 큰 장점입니다. 프로그램의 모든 코드를 한 파일에 담아둘 필요 없이, 기능별로 여러 파일에 분산시켜 깔끔하게 정리할 수 있기 때문입니다.