파이썬 모듈은? 무엇인가? 코딩이쉬워지는 모듈

2025. 5. 10. 02:49IT & Programming/python

파이썬 모듈은 관련된 함수, 변수, 클래스 등을 하나의 파일에 모아놓은 파이썬 코드 집합입니다. 코드의 재사용성을 높이고, 기능을 깔끔하게 분리할 수 있는 매우 중요한 개념입니다.


1. 모듈이란?

  • 하나의 .py 파일이 곧 모듈입니다.
  • 여러 함수와 변수를 포함할 수 있으며, 다른 파이썬 파일에서 import하여 사용할 수 있습니다.

예:

# mymath.py (사용자 정의 모듈)
def add(a, b):
    return a + b

다른 파일에서 사용:

import mymath
print(mymath.add(3, 5))  # 8

2. 모듈 사용 방식 (import)

1) 기본 import

import math
print(math.sqrt(16))  # 4.0

2) 별명(alias) 사용

import numpy as np
np.array([1, 2, 3])

3) 함수만 가져오기

from math import sqrt
print(sqrt(9))  # 3.0

4) 전체 가져오기 (지양 권장)

from math import *  # 가독성이 떨어짐

3. 표준 라이브러리 모듈 예시

파이썬은 기본적으로 매우 많은 표준 모듈을 내장하고 있습니다.

모듈 이름 설명 및 예시

math 수학 함수 제공 (sqrt, factorial 등)
random 난수 생성 (random(), randint())
datetime 날짜와 시간 처리 (datetime.now())
os 운영체제 파일, 경로 처리 (os.getcwd(), os.remove())
sys 시스템 관련 정보 및 인자 처리 (sys.argv)
re 정규 표현식 처리
time 시간 측정, 지연 처리 (sleep 등)
json JSON 인코딩/디코딩
csv CSV 파일 읽고 쓰기
pathlib 경로 객체 기반 파일 처리 (Python 3.4+)

4. 외부 모듈 (패키지)

  • 표준 라이브러리에 없는 모듈은 pip를 통해 설치
  • 예: numpy, pandas, requests, flask, matplotlib

설치 방법:

pip install numpy

사용 예:

import numpy as np
arr = np.array([1, 2, 3])

5. 사용자 정의 모듈 만들기

  • myutils.py라는 파일을 만들고 내부에 함수를 정의
# myutils.py
def greet(name):
    return f"안녕하세요, {name}님"

다른 스크립트에서 사용

import myutils
print(myutils.greet("홍길동"))

주의: 같은 폴더에 있어야 하며, 그렇지 않으면 PYTHONPATH 설정 필요


6. 모듈과 패키지의 차이

구분 설명

모듈 .py 파일 하나
패키지 여러 모듈이 모인 디렉토리, __init__.py 포함 가능

7. __name__ == "__main__" 사용 이유

# mymodule.py
def main():
    print("실행 중...")

if __name__ == "__main__":
    main()
  • 직접 실행 시에는 main() 실행됨
  • 다른 파일에서 import 할 경우 실행되지 않음

요약

  • 파이썬 모듈은 기능 단위 코드 묶음
  • import를 통해 불러와서 재사용 가능
  • 표준 모듈과 외부 모듈, 사용자 정의 모듈로 구분
  • pip으로 외부 모듈 설치 가능
  • 모듈화는 코드 유지보수, 테스트, 협업에 매우 중요

다음은 파이썬 모듈 활용 확장 설명입니다.

각 유형별로 실전 예제와 함께 모듈 구조 설계, 모듈 활용 전략, 패키지 구성법까지 상세히 정리하였습니다.


1. 자주 쓰는 표준 모듈별 실전 예제

math – 수학 계산

import math
print(math.ceil(3.2))      # 4
print(math.factorial(5))   # 120

random – 난수 생성

import random
print(random.randint(1, 10))      # 1부터 10 사이 정수
print(random.choice(['a', 'b']))  # 리스트에서 하나 선택

datetime – 날짜 처리

from datetime import datetime, timedelta
today = datetime.now()
print(today.strftime("%Y-%m-%d"))

yesterday = today - timedelta(days=1)
print("어제 날짜:", yesterday)

os – 파일 경로 관리

import os
print(os.getcwd())            # 현재 경로
os.mkdir("sample_folder")     # 폴더 생성

sys – 시스템 인자 및 종료

import sys
print(sys.argv)               # 실행 시 인자
sys.exit()                    # 프로그램 강제 종료

2. 외부 모듈 예제

requests – HTTP 요청

import requests
response = requests.get("https://api.github.com")
print(response.status_code)
print(response.json())

pandas – 데이터프레임 처리

import pandas as pd
data = {'이름': ['홍길동', '김철수'], '나이': [30, 25]}
df = pd.DataFrame(data)
print(df)

3. 사용자 정의 모듈 구조 설계

폴더 구조:

myproject/
├── main.py
├── utils/
│   ├── __init__.py
│   ├── file_util.py
│   └── math_util.py

파일 내용:

# utils/file_util.py
def save(filename, data):
    with open(filename, 'w') as f:
        f.write(data)
# utils/math_util.py
def square(x):
    return x * x
# main.py
from utils import file_util, math_util

file_util.save("sample.txt", "테스트입니다")
print(math_util.square(5))  # 25

설명:

  • __init__.py는 해당 디렉토리를 패키지로 인식하게 함
  • 기능별 파일로 분리하여 유지보수와 테스트가 쉬움

4. 모듈 작성 시 권장 규칙

  • 하나의 모듈에는 하나의 주제만 다룬다 (예: file, string, log)
  • 파일 이름은 소문자 + 밑줄 권장 (예: string_utils.py)
  • 함수 이름은 명확하게 (예: load_file, calculate_tax)
  • __main__ 블록을 활용하여 독립 실행 가능하게 설계

5. 모듈과 클래스 결합 예제

# tax.py
class TaxCalculator:
    def __init__(self, rate):
        self.rate = rate

    def calc(self, price):
        return price * self.rate

사용:

from tax import TaxCalculator
t = TaxCalculator(0.1)
print(t.calc(10000))  # 1000

6. 모듈 배포 및 설치 방법 간단 요약

  • setuptools를 이용해 pip 설치용 패키지 제작 가능
  • PyPI에 업로드하면 다른 사용자도 pip install 가능
  • 사내 모듈은 사설 저장소 혹은 git 주소를 통해 설치 가능

예:

pip install git+https://github.com/yourname/mymodule.git

결론

구분 설명

표준 모듈 기본 내장, import만으로 사용 가능
외부 모듈 pip로 설치 필요, 기능 확장
사용자 정의 모듈 .py 파일 직접 작성 후 import
패키지 여러 모듈이 모인 구조적 단위, __init__.py 포함

필요하시면 setup.py를 통한 모듈 배포 예시나, 실제 프로젝트 예제 구조를 템플릿으로 만들어드릴 수도 있습니다. 어떻게 도와드릴까요?

반응형

'IT & Programming > python' 카테고리의 다른 글

python String method 파이썬 문자열 메소드  (0) 2025.05.10
Python의 __main__에 대한 설명  (0) 2025.05.10
파이썬(Python) 내장함수에대해 알아보자  (0) 2025.05.10
http status  (0) 2023.03.22
파이선 자료구조  (0) 2023.03.22