파이썬 모듈은? 무엇인가? 코딩이쉬워지는 모듈
2025. 5. 10. 02:49ㆍIT & 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 |