파이썬 모듈 임포트(import) 완벽 가이드 🚀 - PEP 8 스타일과 실용적인 방법 정리

개발공부를해보자·2025년 2월 27일

공부 정리

목록 보기
19/33
  • 모듈을 import할 때 여러 방법이 있다.
  • 나는 보통 리트코드를 주로 이용하고 있는데 리트코드에서 파이썬 표준 라이브러리는 import하지 않아도 된다.
  • 그래서 import를 직접 타이핑한 적이 별로 없는데, import도 방법이 여러가지 있고, 권장하는 스타일이 있다.

여러 가지 import 방법

# ✅ 1. 모듈 임포트 기본 방식 (가장 권장됨)
import math
print(math.sqrt(16))  # 4.0

# ✅ 2. 별칭 사용 (긴 모듈명을 줄일 때 유용)
import numpy as np
print(np.array([1, 2, 3]))  # [1 2 3]

# ✅ 3. 특정 함수만 임포트 (필요한 기능만 가져올 때 사용)
from math import sqrt, factorial
print(sqrt(16))  # 4.0
print(factorial(5))  # 120

# ❌ 4. from 모듈 import * (비추천: 네임스페이스 오염 위험)
# from math import *  # PEP 8에서 권장하지 않음

# ✅ 5. 동적 임포트 (특별한 경우에만 사용)
import importlib
module_name = "math"
math_module = importlib.import_module(module_name)
print(math_module.sqrt(16))  # 4.0

PEP 8 모듈 임포트 가이드 라인

# ✅ 1. 임포트는 파일의 최상단에서 실행할 것
import os
import sys

def my_function():
    pass

# ✅ 2. 한 줄에 하나의 모듈만 임포트할 것
# ❌ 잘못된 예
# import sys, os  # 한 줄에 여러 개의 모듈을 임포트하는 것은 지양

# ✅ 올바른 예
import sys
import os

# ✅ 3. 모듈 임포트 순서를 맞출 것
import os  # 표준 라이브러리
import sys  # 표준 라이브러리

import numpy as np  # 서드파티 라이브러리
import pandas as pd  # 서드파티 라이브러리

import my_module  # 로컬 모듈

# ✅ 4. from 모듈명 import * 사용 금지
# ❌ 잘못된 예
# from math import *  # 네임스페이스 오염 위험

# ✅ 올바른 예
from math import sqrt, factorial  # 필요한 함수만 명시적으로 임포트

# ✅ 5. 별칭 사용 시 직관적으로 줄일 것
import numpy as np  # ✅ 널리 쓰이는 별칭
import pandas as pd  # ✅ 널리 쓰이는 별칭

# ❌ 직관적이지 않은 별칭 (가능한 한 사용하지 않음)
# import my_module as mm  

# ✅ 6. import를 코드 내부에서 쓰는 것은 특별한 경우에만 허용
def dynamic_import(module_name):
    import importlib
    return importlib.import_module(module_name)  # ✅ 특별한 경우 허용

math_module = dynamic_import("math")
print(math_module.sqrt(25))  # 5.0

📊 파이썬 모듈 임포트 방법 비교

방법예시 코드장점단점특징
import 모듈명import math네임스페이스 충돌 없음, 가독성 좋음항상 모듈명.을 붙여야 해서 코드가 길어질 수 있음가장 일반적이고 권장되는 방식
import 모듈명 as 별칭import numpy as np코드가 간결해짐, 긴 모듈명을 줄일 수 있음직관적이지 않은 별칭 사용 시 가독성 저하NumPy, Pandas 등에서 자주 사용됨
from 모듈명 import 함수from math import sqrt모듈명을 생략하고 바로 사용 가능같은 이름의 함수가 다른 모듈과 충돌할 위험특정 기능만 사용할 때 유용
from 모듈명 import *from math import *모든 기능을 한 번에 가져올 수 있음네임스페이스 오염 위험, 가독성 저하PEP 8에서 권장하지 않음 ❌
동적 임포트 (importlib)importlib.import_module("math")문자열로 모듈을 로드할 수 있어 유연함속도가 느리고 디버깅 어려움플러그인 시스템, 동적 로딩에 유용
profile
개발 공부하는 30대 비전공자 직장인

0개의 댓글