[Python] 모듈

·2025년 6월 30일

Python

목록 보기
31/33

💡모듈이란?

모듈(Module): 각각의 소스 파일
이미 만들어져 있고 안정성이 검증된 함수들을 성격에 맞게 하나의 파일로 묶어 놓은 것

모듈의 필요성

  • 코드의 재사용성: 한 번 작성한 함수를 여러 프로젝트에서 재사용
  • 코드의 체계화: 관련된 기능들을 하나의 파일로 정리
  • 협업의 효율성: 팀원들과 코드를 공유하기 쉬움
  • 유지보수성: 기능별로 분리되어 있어 수정이 용이

기본 문법

import 모듈명           # 모듈 전체를 임포트
모듈명.함수명()         # 모듈의 함수 사용

import 모듈명 as 별칭   # 모듈을 별칭으로 임포트
별칭.함수명()          # 별칭으로 함수 사용

✔️ 외부 모듈 사용하기

외부의 모듈에 있는 함수를 사용하려면 이 모듈을 먼저 우리 코드로 가져와서 자유롭게 사용할 수 있도록 해야 하는데, 이런 일을 파이썬에서는 모듈을 import 한다라고 함

예제1. pandas 모듈 사용

외부의 모듈을 호출하는 코드

import pandas as pd  # 판다스라는 모듈을 임포트해서 우리 코드에서 자유롭게 쓰겠다.

emp = pd.read_csv("c:\\data\\emp.csv")
emp
import pandas as pd  # 판다스라는 모듈을 임포트해서 우리 코드에서 자유롭게 쓰겠다.

emp = pd.read_csv("c:\\data\\emp.csv")
emp.loc[emp.sal >= 3000, :]     # emp.loc[검색조건, 컬럼]

import pandas as pd  # 판다스라는 모듈을 임포트해서 우리 코드에서 자유롭게 쓰겠다.

emp = pd.read_csv("c:\\data\\emp.csv")
emp.loc[emp.sal >= 3000, ['ename', 'sal']]     # emp.loc[검색조건, 컬럼]

문제1. 직업이 SALESMAN인 사원들의 이름, 월급, 직업을 출력

import pandas as pd

emp = pd.read_csv("c:\\data\\emp.csv")
emp.loc[emp.job == 'SALESMAN', ['ename', 'sal', 'job']]

다양한 import 방식

1. 모듈 전체 임포트

  • sqrt(): 루트
import math

result = math.sqrt(16)  # 4.0
print(result)

2. 별칭(alias) 사용

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': [1, 2, 3]})
arr = np.array([1, 2, 3])

3. 특정 함수만 임포트

from math import sqrt, pi

result = sqrt(16)  # math.sqrt(16)이 아닌 sqrt(16)으로 사용 가능
print(pi)         # math.pi가 아닌 pi로 사용 가능

# 3.141592653589793

4. 모든 함수 임포트 (권장 X)

from math import *

result = sqrt(16)  # 모든 함수를 직접 사용 가능
print(pi)

⚠️ 주의: from module import *는 네임스페이스 충돌을 일으킬 수 있어 권장 X


✔️ 사용자 정의 모듈 만들기

우리가 직접 모듈을 만들고 싶다면 함수들을 별도의 .py 파일로 저장하면 됨

예제1. 계산기 모듈 만들기

다음 3개의 함수를 포함한 모듈을 만들어보는 예제

def add_number(n1, n2):
    """두 수를 더하는 함수"""
    result = n1 + n2 
    return result

def minus_number(n1, n2):
    """두 수를 빼는 함수"""
    result = n1 - n2
    return result

def gob_number(n1, n2):
    """두 수를 곱하는 함수"""
    result = n1 * n2
    return result

모듈 파일 생성 단계

  1. 메모장이나 텍스트 에디터를 새로 열기
  2. 위의 스크립트를 붙여넣기
  3. yu_auto.py라는 이름으로 저장

현재 디렉토리 확인

import os
print(os.getcwd())  # 현재 작업 디렉토리 확인

# 또는 주피터 노트북에서
!pwd  # 리눅스/맥
!cd   # 윈도우

✔️ 사용자 정의 모듈 사용하기

예제1. yu_auto 모듈 사용

yu_auto.py 파일을 생성한 후, 다음과 같이 사용가능

import yu_auto

yu_auto.add_number(2,3)		#5
yu_auto.minus_number(4,2)	#2
yu_auto.gob_number(2,4)		#8

예제2. 별칭 사용

import yu_auto as calc

calc.add_number(2,3)

예제3. 특정 함수만 임포트

from yu_auto import add_number, minus_number

add_number(4,5) #9

✔️ 모듈 경로와 import 이해하기

1. 모듈 검색 경로

파이썬은 다음 순서로 모듈을 찾음

  1. 현재 디렉토리
  2. PYTHONPATH 환경변수에 지정된 디렉토리
  3. 파이썬 표준 라이브러리 디렉토리
  4. site-packages 디렉토리 (pip로 설치한 패키지들)

2. sys.path 확인

import sys
for path in sys.path:
    print(path)

3. 모듈 경로 추가

import sys
sys.path.append('/path/to/your/module')  # 새로운 경로 추가

import your_module  # 이제 해당 경로의 모듈을 임포트 가능
import sys
sys.path.append('c:;\\users\\itwill')   # 새로운 경로 추가

import yu_auto  # 이제 해당 경로의 모듈을 임포트 가능

✔️ 실무에서 자주 사용하는 모듈들

1. 데이터 분석 모듈

import pandas as pd           # 데이터 분석
import numpy as np           # 수치 계산
import matplotlib.pyplot as plt  # 시각화
import seaborn as sns        # 고급 시각화

2. 웹 개발 모듈

import requests              # HTTP 요청
import flask                 # 웹 프레임워크
import json                  # JSON 처리

3. 시스템 관련 모듈

import os                    # 운영체제 인터페이스
import sys                   # 시스템 관련 기능
import datetime              # 날짜/시간 처리
import random                # 난수 생성

4. 파일 처리 모듈

import csv                   # CSV 파일 처리
import openpyxl             # 엑셀 파일 처리
import sqlite3              # SQLite 데이터베이스

핵심 정리

🎯 모듈의 핵심 개념

  • 재사용성: 한 번 작성한 코드를 여러 곳에서 사용
  • 모듈화: 기능별로 코드를 분리하여 관리
  • 네임스페이스: 함수명 충돌을 방지하고 코드를 체계화

📁 모듈 생성 단계

  1. 함수들을 .py 파일에 작성
  2. 문서화와 테스트 코드 포함
  3. 적절한 위치에 저장
  4. import 문으로 사용

🚀 실무 활용 팁

  • 명확한 네이밍: 모듈과 함수의 이름을 명확하게 작성
  • 문서화: docstring을 활용한 상세한 설명
  • 에러 처리: 예상 가능한 오류에 대한 처리
  • 테스트: if __name__ == "__main__": 블록 활용

⚠️ 주의사항

  • 모듈 이름은 파이썬 키워드와 겹치지 않게 작성
  • 순환 참조(circular import) 방지
  • 적절한 디렉토리 구조 유지

0개의 댓글