반응형

파이썬 모듈과 패키지 완전 정복 🔍

파이썬 코드를 깔끔하게 정리하고 재사용성을 높이는 핵심 기술,
'모듈'과 '패키지'! 지금 바로 마스터해보세요.

 

 

안녕하세요, 여러분 😊

오늘은 파이썬을 조금 더 효율적으로, 조금 더 체계적으로 사용하는 방법에 대해 이야기해 보려고 해요.

바로 모듈과 패키지라는 개념인데요.

처음엔 생소하게 느껴질 수도 있지만, 실제로 코드를 여러 개로 나눠서 재사용하고 관리하려면 꼭 알아야 할 개념이랍니다.

예를 들어,

여러분이 자주 사용하는 함수들을 한 파일에 모아두고 다른 코드에서 불러와 쓰고 싶다면?

바로 이 모듈을 활용하면 됩니다.

그리고 여러 모듈들을 하나로 묶어 관리할 수 있는 단위가 패키지구요!

이 글에서는 모듈과 패키지를 처음 접하는 분들도 쉽게 이해할 수 있도록 예제를 통해 차근차근 설명드릴게요.

그럼 바로 시작해볼까요? 🐍

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))

💡 패키지의 장점

장점 설명
구조화된 코드 관리 기능별로 파일을 나눠 더 깔끔하게 관리할 수 있어요.
재사용성 향상 필요한 기능만 불러와서 다른 프로젝트에서도 쓸 수 있어요.
모듈 충돌 방지 패키지 이름을 앞에 붙이면 동일한 함수명이 충돌하지 않아요.

 

패키지는 프로젝트가 커질수록 반드시 필요해지는 개념이에요.

여러 기능을 깔끔하게 모듈로 나누고, 이를 폴더 단위로 묶어서 재사용성과 유지보수성을 높이는 데 정말 효과적이죠.

 

 

마무리 ✨

여기까지 파이썬의 모듈과 패키지에 대해 차근차근 살펴보았습니다.

처음에는 파일을 나누고 불러오는 개념이 복잡하게 느껴질 수 있지만, 실습을 해보면 생각보다 어렵지 않다는 걸 느끼실 거예요 😊

파이썬은 이런 구조화된 코드 작성을 적극적으로 장려하고 있어서, 프로젝트가 커질수록 모듈과 패키지를 잘 활용하는 게 핵심입니다.

이제 여러분도 자신 있게 자신만의 모듈을 만들고, 필요한 기능을 패키지로 관리할 수 있을 거예요.

 

다음에는 표준 라이브러리서드파티 패키지를 이용해 더 풍부한 기능을 구현해보는 것도 추천드려요.

그럼 다음 포스팅에서 또 만나요!

감사합니다 🙏

반응형

+ Recent posts