안녕하세요, 코딩하는곰입니다. 파이썬의 매력은 풍부한 라이브러리와 모듈 시스템에 있다고 해도 과언이 아닙니다. 수많은 개발자들이 만들어놓은 유용한 코드를 ‘import’ 한 줄로 가져다 쓸 수 있다는 건 정말 강력한 기능이죠. 하지만 이 매력을 제대로 누리기 위해서는 나만의 모듈을 어떻게 만들고, 어떻게 불러오는지에 대한 이해가 필수적입니다. 오늘은 파이썬 프로그래밍의 근간이 되는 ‘모듈 만들기’와 ‘import 사용법’을 초보자부터 중급자까지 누구나 이해할 수 있게 차근차근 풀어보겠습니다. 단순한 문법 설명을 넘어, 실제 프로젝트에서 코드를 어떻게 체계적으로 분리하고 관리해야 하는지에 대한 실전 노하우도 함께 담았으니 끝까지 읽어주시길 바랍니다.
파이썬에서 모듈이란, 간단히 말해 ‘파이썬 정의와 문장들을 담고 있는 파일’입니다. 여기서 ‘정의’는 함수, 클래스, 변수 등을 의미하죠. 파일의 확장자는 .py입니다. 우리가 매번 작성하는 스크립트 파일 하나가 바로 하나의 모듈이 될 수 있습니다.
모듈의 존재 이유는 명확합니다. 코드의 재사용성(Reusability)과 체계적인 관리(Organization). 같은 기능을 여러 프로젝트에서, 혹은 하나의 프로젝트 내 여러 곳에서 반복해서 작성해야 한다면? 그것은 비효율의 지름길입니다. 그 기능을 모듈로 만들어두면, 필요할 때마다 ‘불러와서(import)’ 사용하기만 하면 됩니다. 이는 개발 시간을 단축시킬 뿐만 아니라, 유지보수성도 크게 높여줍니다. 특정 기능을 수정할 때 모듈 파일 하나만 고치면, 그 모듈을 사용하는 모든 곳에 변경사항이 적용되기 때문이죠.
파이썬의 강력함은 이런 모듈 시스템 위에 세워져 있습니다. 수학 연산이 필요하면 math 모듈을, 현재 시간 정보가 필요하면 datetime 모듈을, 운영체제와 상호작용이 필요하면 os 모듈을 가져옵니다. 이 모든 것들이 파이썬 설치 시 함께 제공되는 ‘표준 라이브러리(Standard Library)’ 모듈들입니다. 또, numpy, pandas, requests처럼 전 세계 개발자들이 만든 수많은 ‘서드파티(Third-party) 모듈’들도 pip를 통해 쉽게 설치하여 사용할 수 있습니다. 우리가 할 일은 이 거대한 생태계 속에서 나만의 유용한 모듈을 만들어 추가하는 것입니다.
# 간단한 모듈 예시: calculator.py 파일# 이 파일 자체가 하나의 모듈입니다.def add(a, b):"""두 수를 더하는 함수"""return a + bdef subtract(a, b):"""두 수를 빼는 함수"""return a - bPI = 3.14159 # 모듈 레벨의 변수print("calculator 모듈이 로드되었습니다.") # 주의: 이 코드는 import 시 실행됩니다.
🎮 게임 개발에 관심이 있다면, MySQL/MariaDB FOREIGN KEY 완벽 가이드 - 외래 키 설정과 데이터 무결성 보장를 참고해보세요.
자, 이제 직접 모듈을 만들어 보겠습니다. 원리는 매우 간단합니다. 새로운 .py 파일을 만들고, 그 안에 재사용하고 싶은 코드(함수, 클래스, 변수 등)를 작성하면 끝입니다.
my_utils.py라는 이름의 새 파일을 생성합니다.my_utils는 당신이 만든 모듈입니다.# 파일명: my_utils.pydef greet(name):"""사용자에게 인사하는 함수"""return f"안녕하세요, {name}님! 코딩하는곰의 모듈입니다."def get_average(numbers):"""숫자 리스트의 평균을 계산하는 함수"""if not numbers: # 리스트가 비어있으면 0 반환return 0return sum(numbers) / len(numbers)def is_even(number):"""숫자가 짝수인지 판별하는 함수"""return number % 2 == 0# 모듈 테스트 코드 (실제 사용 시 주의가 필요한 부분입니다)if __name__ == "__main__":print(greet("테스터"))print(get_average([10, 20, 30, 40, 50]))print(is_even(7))
여기서 특별히 봐야 할 것은 마지막 if __name__ == "__main__": 블록입니다. 이는 파이썬 모듈 프로그래밍의 중요한 관례입니다. __name__은 모듈의 이름을 담고 있는 특별한 내장 변수입니다. 이 파일(my_utils.py)이 직접 실행될 때는 __name__의 값이 "__main__"이 되어 블록 안의 코드가 실행됩니다. 반면, 다른 파일에서 import my_utils로 불러올 때는 __name__의 값이 "my_utils"가 되어 이 블록 안의 코드는 실행되지 않습니다. 이를 통해 모듈 파일 자체를 스크립트처럼 테스트하는 용도와, 다른 곳에서 불러서 쓰는 라이브러리 용도를 깔끔하게 분리할 수 있습니다.
기억력 감퇴를 막고 인지 능력을 향상시키고 싶다면, AI 힌트 기능이 있는 스도쿠 저니를 활용해보세요.
모듈을 만들었으면 이제 사용해야 합니다. 사용법의 핵심은 import 문입니다. import는 단순해 보이지만, 다양한 형태로 활용할 수 있어 상황에 맞게 선택하는 것이 중요합니다.
1. 기본 import: import 모듈이름
가장 기본적인 형태입니다. 모듈 전체를 현재 파일의 네임스페이스(namespace)로 가져옵니다. 모듈 내의 함수나 변수를 사용할 때는 모듈이름.함수명 처럼 점(.)을 통해 접근해야 합니다. 이는 코드에서 해당 기능이 어느 모듈에서 왔는지 명확하게 보여주어 가독성과 유지보수성에 좋습니다.
import my_utilsimport mathmessage = my_utils.greet("철수") # 'my_utils.' 을 붙여서 사용print(message)root = math.sqrt(16) # 'math.' 을 붙여서 사용print(root)
2. 특정 항목만 import: from 모듈이름 import 함수명
모듈 전체가 아닌, 필요한 특정 함수나 변수만 골라서 가져올 때 사용합니다. 이렇게 가져온 항목은 모듈 이름 없이 직접 사용할 수 있습니다. 코드가 간결해지지만, 여러 모듈에서 동일한 이름의 함수를 가져왔을 때 충돌이 발생할 수 있다는 점에 주의해야 합니다.
from my_utils import greet, get_averagefrom math import pi, sqrt# 모듈 이름 없이 직접 사용!print(greet("영희"))avg = get_average([1, 2, 3, 4, 5])print(pi)
3. 별칭(Alias) 사용하기: import 모듈이름 as 별칭 또는 from 모듈이름 import 함수명 as 별칭
모듈이나 함수의 이름이 길거나, 다른 모듈과 이름이 충돌할 가능성이 있을 때 매우 유용한 방법입니다. pandas를 pd로, numpy를 np로 불러오는 것이 대표적인 예시입니다.
import my_utils as mufrom math import sqrt as square_rootprint(mu.greet("민수")) # 'mu'라는 짧은 이름으로 접근result = square_root(9) # 'sqrt' 대신 'square_root'라는 이름으로 사용
4. 모듈 검색 경로 이해하기: sys.path
파이썬이 import my_utils를 실행했을 때, 도대체 어디에서 my_utils.py 파일을 찾을까요? 이는 sys.path라는 리스트에 정의된 디렉토리 경로들을 순서대로 탐색하며 결정됩니다. 일반적으로 현재 실행 중인 스크립트의 디렉토리, 환경변수 PYTHONPATH에 설정된 디렉토리, 파이썬 설치 경로의 표준 라이브러리 디렉토리 등이 포함됩니다. 모듈을 임포트할 수 없다는 ModuleNotFoundError를 마주쳤다면, 먼저 당신의 모듈 파일이 sys.path에 있는 경로 중 하나에 위치해 있는지 확인해야 합니다.
import sysprint(sys.path) # 파이썬이 모듈을 찾는 모든 경로를 출력해 봅시다.
📊 성분, 효능, 가격까지 비교해보고 싶은 분들을 위한, 비타민C 1000를 참고해보세요.
지금까지 파이썬 모듈의 기본 개념부터 생성 방법, 그리고 import 문의 모든 것까지 자세히 알아보았습니다. 모듈은 단순한 문법이 아닌, 파이썬다운(Pythonic)이고 효율적인 코드를 작성하기 위한 철학이 담긴 도구입니다. 작은 유틸리티 함수 묶음부터 복잡한 프로젝트의 핵심 로직까지, 모듈화를 잘 활용하는 개발자는 코드 관리가 쉬워지고 협업도 수월해집니다. 오늘 배운 내용을 바탕으로, 자주 사용하는 코드 조각들을 하나씩 모듈로 만들어 보는 습관을 들여보세요. 처음엔 조금 번거롭게 느껴질 수 있지만, 이 투자는 반드시 더 나은 코드와 더 빠른 개발 속도로 돌아올 것입니다. 다음 시간에는 여러 모듈을 디렉토리 구조로 묶는 ‘패키지(Package)‘에 대해 더 깊이 파고들어 보겠습니다. 질문이나 요청이 있다면 댓글로 남겨주세요! 코딩하는곰이었습니다. 감사합니다.
QR코드로 번호를 빠르게 확인하고 AI 추천도 받고 싶다면, 통계 기능까지 갖춘 지니로또AI 앱을 추천합니다.
