파이썬 모듈과 패키지 완전 정복 🔍
파이썬 코드를 깔끔하게 정리하고 재사용성을 높이는 핵심 기술,
'모듈'과 '패키지'! 지금 바로 마스터해보세요.
안녕하세요, 여러분 😊
오늘은 파이썬을 조금 더 효율적으로, 조금 더 체계적으로 사용하는 방법에 대해 이야기해 보려고 해요.
바로 모듈과 패키지라는 개념인데요.
처음엔 생소하게 느껴질 수도 있지만, 실제로 코드를 여러 개로 나눠서 재사용하고 관리하려면 꼭 알아야 할 개념이랍니다.
예를 들어,
여러분이 자주 사용하는 함수들을 한 파일에 모아두고 다른 코드에서 불러와 쓰고 싶다면?
바로 이 모듈을 활용하면 됩니다.
그리고 여러 모듈들을 하나로 묶어 관리할 수 있는 단위가 패키지구요!
이 글에서는 모듈과 패키지를 처음 접하는 분들도 쉽게 이해할 수 있도록 예제를 통해 차근차근 설명드릴게요.
그럼 바로 시작해볼까요? 🐍
목차
1. 모듈이란? 📁
파이썬으로 프로젝트를 하다 보면 공통으로 사용하는 함수나 클래스가 많아져요.
이럴 때 유용한 개념이 바로 모듈(Module)입니다.
모듈은 쉽게 말해 "파이썬 코드가 들어 있는 파일(.py)"로,
자주 사용하는 코드들을 함수, 변수, 클래스 등으로 정의해두고
필요할 때마다 가져다 쓸 수 있도록 만들어 둔 파일이에요.
모듈의 정의와 구조
모듈은 단 하나의 `.py` 파일입니다.
예를 들어,
아래와 같은 파일이 있다고 해볼게요.
# mod1.py
def add(a, b):
return a + b
def sub(a, b):
return a - b
이 파일을 mod1
이라는 이름의 모듈로 다른 파일에서 불러와서 사용할 수 있어요.
모듈을 사용하는 이유
- 코드의 재사용이 쉬워져요 (한 번 만든 함수를 여러 곳에서 재활용)
- 코드가 더 깔끔하고 관리하기 쉬워져요 (기능별로 파일을 분리)
- 협업할 때 각자 맡은 부분을 모듈 단위로 분리해서 작업할 수 있어요
내장 모듈 vs 사용자 정의 모듈
구분 | 설명 | 예시 |
---|---|---|
내장 모듈 | 파이썬 설치 시 기본으로 제공되는 모듈 | math, random, datetime 등 |
사용자 정의 모듈 | 개발자가 직접 만든 .py 파일 | mod1.py, myutils.py 등 |
이처럼 파이썬에서 모듈은 정말 자주 쓰이고 꼭 알아둬야 하는 기본 중의 기본이에요.
특히 큰 프로젝트를 할 때 파일을 잘게 나눠야 관리가 쉬워지는데, 이럴 때 모듈이 진짜 진가를 발휘하죠.
2. 모듈 불러오기 방법들 🧲
모듈을 만들었으면, 이제 그걸 어떻게 불러와 사용하는지가 중요하겠죠?
파이썬에서는 다양한 방식으로 모듈을 불러올 수 있어요.
상황에 맞게 선택해서 쓰면 되는데, 각각의 차이를 정확히 아는 게 중요해요!
기본적인 import 사용법
# 모듈 전체를 불러오는 방법
import mod1
print(mod1.add(3, 4)) # 7
이 방법은 모듈 이름을 앞에 붙여서 함수나 변수에 접근해요.
다소 길어지지만, 어떤 모듈의 함수인지 명확하게 보여준다는 장점이 있어요.
from ~ import 방식
# 특정 함수만 불러오기
from mod1 import add
print(add(3, 4)) # 7
- 필요한 함수만 불러올 수 있어 메모리 낭비를 줄일 수 있음
- 함수 이름을 짧게 쓰고 싶을 때도 유용함
from ~ import * 방식
from mod1 import *
print(add(3, 4))
print(sub(7, 2))
이 방식은 모든 함수나 변수를 불러오지만,
어떤 함수가 어디서 왔는지 혼동될 수 있기 때문에 권장되지 않아요.
특히 다른 모듈에서 같은 이름의 함수가 있을 경우 충돌 위험이 있어요.
as 키워드로 별칭 주기
import mod1 as m
print(m.add(5, 6))
모듈 이름이 너무 길거나 자주 사용할 경우 as
키워드를 이용해 별칭을 붙이면 더 짧게 쓸 수 있어서 편리해요.
모듈 불러오기 요약
형식 | 설명 | 예시 |
---|---|---|
import 모듈명 | 전체 모듈을 불러옴 | import math |
from 모듈 import 항목 | 특정 함수/변수만 불러옴 | from math import sqrt |
import 모듈 as 별칭 | 모듈에 별칭 부여 | import numpy as np |
여기까지 다양한 모듈 불러오기 방법을 정리해봤어요.
다음 파트에서는 모듈이 실행될 때 발생하는 중요한 조건인 __name__ == "__main__"
의 의미를 알아볼게요!
3. if __name__ == "__main__"의 의미 🧠
파이썬 모듈을 만들다 보면 꼭 한 번은 만나게 되는 코드가 있어요.
바로 if __name__ == "__main__"
이라는 조건문이죠.
이게 도대체 무슨 뜻일까?
왜 넣어야 할까?
한 번 차근차근 살펴볼게요!
__name__ 변수란?
파이썬 파일이 실행될 때, 파이썬은 특별한 변수 __name__
을 자동으로 정의해요.
그리고 파일을 직접 실행하면 이 __name__
의 값은 "__main__"
이 됩니다.
하지만 다른 파일에서 import되면 __name__
에는 그 파일명이 들어가요.
이 코드가 필요한 이유
어떤 모듈을 직접 실행할 때는 테스트 코드를 실행하고 싶고, 다른 파일에서 import할 때는 실행하지 않고 싶을 때가 있잖아요?
그럴 때 바로 아래와 같이 코드를 작성하면 됩니다:
# mod1.py
def add(a, b):
return a + b
if __name__ == "__main__":
print("add(3, 4) =", add(3, 4))
이렇게 작성하면 mod1.py를 직접 실행했을 때만 결과가 출력되고,
다른 파일에서 import해서 쓸 때는 print
문이 실행되지 않아요.
딱 우리가 원하는 조건이죠!
사용 예시 비교
상황 | __name__ 값 | 코드 실행 여부 |
---|---|---|
직접 실행 | "__main__" | if 블록 실행됨 |
다른 파일에서 import | 모듈명(mod1 등) | if 블록 실행 안 됨 |
__name__ == "__main__"
은 모듈을 잘 활용하기 위한 필수 도구예요.
코드 테스트용으로도 정말 많이 쓰이고, 큰 프로젝트에서는 꼭 필요한 패턴이기도 하죠!
4. 모듈 실습 예제 🎯
자, 이쯤에서 한번 직접 모듈을 만들어 보고 사용하는 연습을 해볼까요?
실습을 통해 어떻게 동작하는지 익히면 기억에도 오래 남고, 실전에서도 바로 쓸 수 있어요! 😎
1단계: 모듈 파일 만들기
먼저 calculator.py
라는 파일을 하나 만들어 아래 코드를 작성해 보세요.
# 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
2단계: 모듈 사용하기
이번엔 같은 폴더에 main.py
라는 파일을 만들어 아래처럼 작성해 보세요.
# main.py
import calculator
print("덧셈:", calculator.add(3, 5))
print("뺄셈:", calculator.sub(10, 4))
print("곱셈:", calculator.mul(2, 3))
print("나눗셈:", calculator.div(8, 2))
이렇게 calculator 모듈을 불러와서 다양한 연산을 해볼 수 있어요.
결과는 각각 함수에 따라 숫자가 계산되어 출력됩니다.
3단계: __main__ 조건 추가
calculator.py에 테스트용 코드도 추가해봅시다!
if __name__ == "__main__":
print("테스트용 계산 결과:")
print("add(2, 2) =", add(2, 2))
- calculator.py를 직접 실행하면 테스트 결과가 출력되고,
- main.py에서 불러오면 테스트 코드는 무시돼요.
💡 정리
직접 모듈을 만들어 보고 불러와서 사용하는 연습은 매우 중요해요.
이 과정을 통해 파이썬의 모듈 구조가 어떻게 작동하는지 명확히 이해할 수 있거든요.
나중에 프로젝트를 할 때 모듈을 나누는 기준이나 코드 관리 측면에서도 큰 도움이 될 거예요.
5. 패키지란 무엇인가? 📦
모듈이 하나의 파이썬 파일이라면, 패키지(Package)는 여러 모듈을 폴더 단위로 묶어 구성한 디렉터리 구조입니다.
즉, 관련된 모듈들을 체계적으로 정리하고 관리할 수 있도록 만들어진 구조예요.
패키지 구조 예시
아래는 간단한 계산기 패키지를 구성한 예예요:
mycalcpkg/
├── __init__.py
├── add.py
├── sub.py
-
__init__.py
는 해당 디렉터리를 패키지로 인식하게 만드는 파일이에요. - 그 외 파일들은 각각의 모듈 역할을 해요. (add.py는 덧셈, sub.py는 뺄셈 담당)
패키지 사용 예시
main.py
파일에서 아래와 같이 사용해볼 수 있어요.
from mycalcpkg import add, sub
print(add.add(5, 3))
print(sub.sub(9, 2))
💡 패키지의 장점
장점 | 설명 |
---|---|
구조화된 코드 관리 | 기능별로 파일을 나눠 더 깔끔하게 관리할 수 있어요. |
재사용성 향상 | 필요한 기능만 불러와서 다른 프로젝트에서도 쓸 수 있어요. |
모듈 충돌 방지 | 패키지 이름을 앞에 붙이면 동일한 함수명이 충돌하지 않아요. |
패키지는 프로젝트가 커질수록 반드시 필요해지는 개념이에요.
여러 기능을 깔끔하게 모듈로 나누고, 이를 폴더 단위로 묶어서 재사용성과 유지보수성을 높이는 데 정말 효과적이죠.
마무리 ✨
여기까지 파이썬의 모듈과 패키지에 대해 차근차근 살펴보았습니다.
처음에는 파일을 나누고 불러오는 개념이 복잡하게 느껴질 수 있지만, 실습을 해보면 생각보다 어렵지 않다는 걸 느끼실 거예요 😊
파이썬은 이런 구조화된 코드 작성을 적극적으로 장려하고 있어서, 프로젝트가 커질수록 모듈과 패키지를 잘 활용하는 게 핵심입니다.
이제 여러분도 자신 있게 자신만의 모듈을 만들고, 필요한 기능을 패키지로 관리할 수 있을 거예요.
다음에는 표준 라이브러리나 서드파티 패키지를 이용해 더 풍부한 기능을 구현해보는 것도 추천드려요.
그럼 다음 포스팅에서 또 만나요!
감사합니다 🙏
'Python' 카테고리의 다른 글
파이썬 데이터베이스 프로그래밍 완전 입문: SQLite로 배우는 DB 연동 기초 (1) | 2025.04.12 |
---|---|
파이썬 표준 라이브러리 완벽 정복: 꼭 알아야 할 핵심 모듈 6가지 (1) | 2025.04.11 |
파이썬 객체지향 프로그래밍과 매직 메서드 완벽 정리 (1) | 2025.04.11 |
파이썬 클래스(Class)로 배우는 객체지향 프로그래밍 (4) | 2025.04.11 |
파이썬의 표준 입출력 완전 정복 (0) | 2025.04.11 |