에듀테크 프로젝트 대시보드
모듈 · 패키지 · import
.py 파일 하나가 모듈, 모듈을 담은 폴더가 패키지입니다.
import math
math.sqrt(16)
import numpy as np # 별칭
from math import sqrt, pi # 이름 직접 가져오기
from math import sqrt as sq
from collections import * # 전부 (권장 안 함 — 이름 충돌)
from . import sibling # 상대 임포트 (패키지 내부)
from ..pkg import thing# mymodule.py
def main():
print("실행")
if __name__ == "__main__":
main() # 이 파일을 직접 실행할 때만 (import 시엔 안 돌아감)
# python mymodule.py → __name__ == "__main__"
# import mymodule → __name__ == "mymodule"myapp/
├── __init__.py # 패키지임을 표시 (비어 있어도 됨)
├── core.py
├── utils/
│ ├── __init__.py
│ └── text.py
└── __main__.py # python -m myapp 로 실행되는 진입점
# 사용
from myapp.core import run
from myapp.utils.text import slugifyimport sys
sys.path # import 가 뒤지는 디렉터리 목록
# 1) 현재 스크립트 폴더 2) PYTHONPATH 3) 표준 라이브러리 4) site-packages
# 모듈 정보
math.__file__ # 파일 위치
dir(math) # 노출된 이름들
import importlib
importlib.reload(mymodule) # 개발 중 다시 로드ImportError 또는 부분 초기화| 분야 | 모듈 |
|---|---|
| 파일·경로 | pathlib, os, shutil, glob |
| 데이터 | json, csv, sqlite3, pickle |
| 날짜·시간 | datetime, time, zoneinfo |
| 수학·난수 | math, random, statistics, decimal |
| 텍스트 | re, string, textwrap |
| 함수형 | itertools, functools, operator |
| 동시성 | threading, multiprocessing, asyncio, concurrent.futures |
| 네트워크 | urllib, http, socket |
| 개발 | logging, argparse, unittest, dataclasses, typing |
# mymodule.py
__all__ = ["public_func", "PublicClass"] # from mymodule import * 대상 제한
def public_func(): ...
def _private(): ... # * 로 안 딸려옴