Python 강좌 / 모듈 만들고 import로 코드 나누기
모듈은 재사용할 Python 코드를 담은 단위이며 보통 .py 파일 하나로 시작합니다. import는 파일을 단순히 복사하는 작업이 아니라 모듈을 찾아 초기화하는 과정이므로 파일 위치와 최상위 실행 코드에 주의해야 합니다.
파일을 나누는 기준
계산과 화면 출력을 분리해 계산 함수는 expense_math.py에, 실행 코드는 app.py에 둡니다. 두 파일을 같은 실습 폴더에 저장합니다. 모듈 이름에는 하이픈 대신 밑줄을 사용하고 표준 라이브러리와 같은 json.py·csv.py 이름은 피합니다.
관련 동작과 지원 조건은 모듈 만들고 import로 코드 나누기 관련 공식 문서에서 확인할 수 있습니다.
import expense_math는 모듈 이름을 연결하고 expense_math.total로 함수를 참조합니다. from expense_math import total은 이름을 직접 가져오지만 같은 이름이 겹치지 않는지 확인해야 합니다.
두 파일의 전체 예제
expense_math.py 파일의 전체 내용입니다.
def total(amounts):
return sum(amounts)
app.py 파일의 전체 내용입니다.
import expense_math print(expense_math.total([3500, 8000, 2500]))
두 파일이 있는 폴더에서 아래 명령을 실행합니다.
python app.py
결과는 14000입니다. 이 예제는 외부 패키지 설치가 필요하지 않습니다.
탐색 경로와 초기화
모듈 탐색에는 실행 방식에 따른 경로와 설치 환경이 사용됩니다. ModuleNotFoundError가 나면 오타, 현재 실행 환경, 프로젝트 구조를 확인합니다. sys.path를 무작정 수정하거나 파일을 전역 설치 폴더로 복사하기 전에 실행 위치가 맞는지 점검하세요.
모듈의 최상위 코드는 처음 import할 때 실행됩니다. 최상위에 input이나 데이터 삭제를 넣으면 가져오기만 해도 작업이 시작될 수 있습니다. 재사용할 코드는 함수로 정의하고 실제 실행 진입점에서 호출합니다. 이미 import한 모듈은 보통 캐시되므로 편집 후 실행 프로세스를 다시 시작해 확인합니다.
순환 import와 작은 확인 실습
- app.py의 금액 하나를 바꿔 같은 계산 함수로 결과가 달라지는지 확인합니다.
- expense_math.py의 함수 정의 밖에 print를 잠시 넣어 import 시 실행되는지 관찰한 뒤 제거합니다.
- 파일을 json.py로 만들었을 때 표준 모듈을 가릴 수 있는 이유를 설명합니다.
두 모듈이 서로를 가져오면서 아직 정의되지 않은 이름을 요구하면 순환 import 문제가 생길 수 있습니다. 공통 계산을 세 번째 모듈로 분리하거나 의존 방향을 한쪽으로 정리하세요.




