한 파일에 함수가 계속 늘어나면 코드를 찾고 고치기가 어려워집니다. 계산 함수는 calculator.py에 두고, 실행 코드는 main.py에 나누면 같은 함수를 다른 프로그램에서도 다시 쓸 수 있습니다. 두 파일을 연결할 때 사용하는 문장이 import입니다.
이 글에서는 같은 폴더에 만든 Python 파일을 불러오는 가장 작은 예제부터 시작합니다. import calculator와 from calculator import add의 차이, 파일을 불러올 때 코드가 실행되는 이유, if __name__ == "__main__":이 필요한 상황까지 실제 출력으로 확인합니다.

확인한 환경
- 운영체제 : Windows
- 직접 실행한 Python : 3.9.13
- 공식 문서 기준 : Python 3.14.7 모듈 튜토리얼과 import 시스템 문서
- 확인일 : 2026년 9월 5일
이번 예제는 Python 3의 기본 import 문법만 사용합니다. 별도 패키지를 설치할 필요가 없습니다.
모듈은 함수를 담아 둔 Python 파일입니다
모듈은 함수, 변수, 실행문 같은 Python 코드를 담은 파일입니다. 파일명이 calculator.py라면 모듈 이름은 확장자를 뺀 calculator입니다.
import는 다른 모듈을 찾아 불러오고, 현재 파일에서 그 모듈 이름을 사용할 수 있게 하는 문장입니다. Python 공식 문서의 설명을 초보자 예제에 맞춰 풀면 다음 흐름입니다.
입력 : import 뒤에 적은 모듈 이름
처리 : Python이 모듈을 찾고, 처음 불러올 때 파일의 코드를 실행
출력 : 현재 파일에서 사용할 수 있는 모듈 객체와 그 이름
불변 : 가져온 함수를 호출하기 전까지 함수의 입력값과 결과는 생기지 않음
실패 : 모듈을 찾지 못하면 ModuleNotFoundError 발생
모듈 객체는 불러온 파일의 함수와 변수를 묶어 들고 있는 값이라고 이해하시면 됩니다. calculator.add처럼 점을 찍어 그 안의 함수를 선택할 수 있습니다.
먼저 두 파일을 같은 폴더에 만들기
빈 폴더를 하나 만들고 아래처럼 파일 두 개를 둡니다.
import-example
├─ calculator.py
└─ main_import.py
파일 이름의 .py까지 확인하세요. Windows에서 알려진 파일 형식을 숨기도록 설정했다면 실제 이름이 calculator.py.txt가 되어도 화면에는 calculator.py처럼 보일 수 있습니다.
먼저 calculator.py에는 두 수를 더하는 함수만 작성합니다.
def add(a, b):
return a + b
add 함수는 a와 b 두 값을 입력으로 받습니다. a + b를 계산한 뒤 return으로 결과를 돌려줍니다. 함수가 처음이라면 파이썬 함수 만들기 : def 정의부터 매개변수와 return까지를 먼저 읽고 오셔도 좋습니다.
이제 main_import.py에 다음 코드를 작성합니다.
import calculator
result = calculator.add(10, 20)
print("더한 결과:", result)
첫 줄의 import calculator에는 .py를 적지 않습니다. Python은 calculator라는 모듈을 찾고, 현재 파일에서는 calculator라는 이름으로 그 모듈을 가리키게 합니다.
세 번째 줄은 왼쪽부터 읽기보다 안쪽부터 읽으면 이해하기 쉽습니다.
calculator.add(10, 20)
└─ calculator 모듈 안의 add 함수에 10과 20을 전달
result = 계산 결과
└─ add가 돌려준 30을 result에 저장
PowerShell이나 VSCode 터미널에서 두 파일이 있는 폴더로 이동한 뒤 실행합니다.
python main_import.py
직접 실행한 결과는 다음과 같습니다.
더한 결과: 30
입력은 10과 20, 처리는 add 함수의 덧셈, 출력은 반환된 30입니다. calculator.py 파일의 함수 정의는 그대로 있고, main_import.py가 그 함수를 불러와 새 입력으로 사용했습니다.
import와 from import의 차이
같은 함수를 아래처럼 불러올 수도 있습니다.
from calculator import add
result = add(10, 20)
print("더한 결과:", result)
두 방식 모두 실행 결과는 더한 결과: 30입니다. 달라지는 것은 현재 파일에 생기는 이름입니다.
| 작성 방법 | 현재 파일에 생기는 이름 | 함수를 호출하는 방법 |
|---|---|---|
import calculator |
calculator |
calculator.add(10, 20) |
from calculator import add |
add |
add(10, 20) |
import calculator는 함수가 어느 모듈에서 왔는지 코드에 남습니다. 파일이 여러 개로 늘어나는 입문 단계에서는 calculator.add()처럼 출처가 보이는 방식이 읽기 편합니다.
from calculator import add는 필요한 함수만 현재 파일의 이름으로 가져옵니다. 짧게 쓸 수 있지만, 현재 파일에도 add라는 함수가 있다면 이름이 겹쳐 어느 함수를 가리키는지 헷갈릴 수 있습니다.
다음처럼 별표로 모두 가져오는 문법도 있지만 첫 예제에서는 사용하지 않는 편이 좋습니다.
from calculator import *
공식 튜토리얼도 이 방식은 어떤 이름이 들어오는지 알기 어렵고 기존 이름을 가릴 수 있어 일반적인 코드에서 권하지 않습니다. 필요한 모듈이나 함수 이름을 직접 적어 주세요.
import할 때 파일 안의 코드도 실행됩니다
초보자가 자주 놓치는 부분이 하나 있습니다. import는 함수 이름만 복사하는 동작이 아닙니다. 모듈을 처음 불러올 때 그 파일의 최상위 코드를 위에서 아래로 실행합니다.
예를 들어 calculator.py를 아래처럼 작성해 보겠습니다.
print("calculator 모듈을 읽었습니다")
def add(a, b):
return a + b
main_import.py를 실행하면 add()를 호출하기 전인데도 첫 문장이 출력됩니다.
calculator 모듈을 읽었습니다
더한 결과: 30
함수의 본문인 return a + b는 함수를 호출할 때 실행됩니다. 반면 함수 밖에 있는 print()는 모듈을 불러오는 과정에서 실행됩니다. 설정 준비처럼 의도한 초기화 코드가 아니라면, 가져다 쓸 파일의 최상위에는 바로 실행되는 코드를 많이 두지 않는 편이 안전합니다.
직접 실행할 때만 테스트 코드가 나오게 하기
calculator.py 자체를 실행할 때는 함수를 시험하고 싶지만, 다른 파일에서 불러올 때는 시험 문구가 나오지 않게 만들 수 있습니다.
def add(a, b):
return a + b
if __name__ == "__main__":
print("calculator.py 직접 실행:", add(3, 4))
__name__은 Python이 각 모듈에 넣어 주는 이름입니다.
python calculator.py처럼 파일을 직접 실행하면__name__은 문자열"__main__"입니다.import calculator로 불러오면__name__은 문자열"calculator"입니다.
따라서 위의 if 조건 아래 코드는 calculator.py를 직접 실행할 때만 동작합니다.
python calculator.py
실행 결과는 다음과 같습니다.
calculator.py 직접 실행: 7
반대로 python main_import.py를 실행하면 테스트 문구는 나오지 않습니다.
더한 결과: 30
이 조건문은 import 자체를 막는 문장이 아닙니다. 파일을 직접 실행했을 때만 필요한 예제, 간단한 테스트, 프로그램 시작 코드를 구분하는 장치입니다.
실제 예제 : 주문 계산 함수를 다른 파일에서 사용하기
이번에는 계산과 출력 형식을 order_tools.py에 나누어 두겠습니다.
def calculate_total(price, quantity):
return price * quantity
def format_won(amount):
return f"{amount:,}원"
실행을 담당하는 order_main.py에서는 모듈을 한 번 가져온 뒤 두 함수를 사용합니다.
import order_tools
price = 12000
quantity = 3
total = order_tools.calculate_total(price, quantity)
message = order_tools.format_won(total)
print("상품 가격:", order_tools.format_won(price))
print("수량:", quantity)
print("결제 금액:", message)
실행 결과는 다음과 같습니다.
상품 가격: 12,000원
수량: 3
결제 금액: 36,000원
값의 흐름은 12000과 3이 calculate_total()로 들어가 곱셈 결과 36000이 되고, 그 값이 다시 format_won()으로 들어가 문자열 "36,000원"이 되는 순서입니다. 계산 함수가 있는 원본 파일은 바뀌지 않으며, 다른 실행 파일에서도 같은 함수를 다른 가격과 수량으로 다시 사용할 수 있습니다.
불러오지 못하거나 이름을 찾지 못할 때
No module named가 나오는 경우
ModuleNotFoundError: No module named 'calculator'
먼저 main_import.py와 calculator.py가 같은 폴더에 있는지, 파일 이름이 정확한지 확인합니다. 다른 폴더에 있다면 Python이 검색하는 경로와 패키지 구조를 따로 다뤄야 합니다. 외부 패키지를 설치했는데 같은 오류가 난다면 파이썬 ModuleNotFoundError 해결 : pip와 실행 Python 경로 맞추기의 환경 확인 순서를 적용하세요.
cannot import name이 나오는 경우
ImportError: cannot import name 'add' from 'calculator'
from calculator import add라고 썼지만 calculator.py 안에 add라는 이름이 없을 때 발생할 수 있습니다. 함수 이름의 철자와 대소문자를 함께 확인합니다. Python은 add와 Add를 다른 이름으로 구분합니다.
파일 이름이 표준 모듈과 겹치는 경우
연습 파일에 random.py, json.py, math.py처럼 Python 표준 라이브러리와 같은 이름을 붙이면, 원래 모듈 대신 현재 폴더의 파일을 가져올 수 있습니다. 공식 문서도 실행 스크립트가 있는 디렉터리가 표준 라이브러리 경로보다 앞에 놓일 수 있다고 설명합니다.
직접 만든 파일에는 order_tools.py, price_calculator.py처럼 역할이 드러나고 표준 모듈과 겹치지 않는 이름을 쓰는 편이 좋습니다. 이름을 바꾼 뒤에도 이상하면 자동 생성된 __pycache__보다 먼저 실행 중인 터미널이나 Python 프로세스를 종료하고 다시 실행해 보세요.
두 파일을 연결할 때 기억할 기준
같은 폴더의 calculator.py를 불러올 때는 확장자를 빼고 import calculator라고 씁니다. 함수는 calculator.add()처럼 모듈 이름 뒤에 점을 찍어 호출할 수 있습니다. from calculator import add는 add()로 짧게 호출하지만 이름이 어디에서 왔는지 덜 드러납니다.
무엇보다 import할 때 모듈의 최상위 코드가 실행된다는 점을 기억하세요. 직접 실행할 때만 필요한 코드는 if __name__ == "__main__": 아래에 두면, 함수 모듈을 다른 파일에서 조용히 다시 사용할 수 있습니다.
참고 문서
'IT프로그래밍 > 파이썬' 카테고리의 다른 글
| 파이썬 ModuleNotFoundError 해결 : pip와 실행 Python 경로 맞추기 (0) | 2026.09.04 |
|---|---|
| 파이썬 t-string 사용법 : f-string과 다른 점과 Python 3.14 처리 원리 (0) | 2026.09.02 |
| 파이썬 sorted와 sort 차이 : key와 lambda로 원하는 기준 정렬하기 (0) | 2026.09.01 |
| 파이썬 enumerate와 zip 사용법 : 번호와 두 리스트를 함께 꺼내기 (0) | 2026.08.26 |
| 파이썬 리스트 컴프리헨션 : for문 한 줄의 순서와 if 위치 (0) | 2026.08.21 |
| 파이썬 파일 읽기 쓰기 : with open으로 주문장을 남기는 방법 (0) | 2026.08.20 |
| 파이썬 try except 사용법 : ValueError와 KeyError 예외 처리 (0) | 2026.08.20 |
| 파이썬 set 사용법 : 리스트 중복 제거와 순서 유지 방법 (0) | 2026.08.18 |
댓글