반응형

파이썬을 공부하다 보면
거의 모든 예제 코드 맨 아래에 이런 문장을 한 번쯤 본 적 있을 거예요.
if __name__ == "__main__":
run_tests()
이게 도대체 뭘까?
함수일까? 아니면 어떤 트릭일까?
사실 둘 다 아닙니다.
이건 파이썬이 가진 공식적인 실행 규칙,
즉 “이 파일을 직접 실행했을 때만 실행하라”는 뜻이에요.
1. “파이썬 파일”은 하나의 프로그램이다
예를 들어 main.py 파일을 이렇게 만들었다고 해볼게요.
print("안녕! 나는 main.py야!")
이제 터미널에서 실행해보면
$ python main.py
안녕! 나는 main.py야!
정상적으로 실행됩니다.
그런데 나중에 이 파일을 다른 곳에서 이렇게 불러온다면?
import main
이 순간 main.py 안의 print() 문이 자동으로 실행됩니다.
안녕! 나는 main.py야!
“난 단순히 불러오기만 했는데 실행이 되네?”
이게 바로 문제예요.
2. 그래서 생긴 규칙이 바로 이것
if __name__ == "__main__":
run_tests()
이 한 줄은 이렇게 해석됩니다.
1. 이 파일을 직접 실행할 때만 아래 코드를 실행해라.
2. 다른 파일에서 import할 때는 실행하지 마라.
이 구문이 있으면
다른 파일에서 불러와도 print()나 테스트 코드가 자동으로 실행되지 않아요.
3. 예를 들어서 비교해보기
파일 이름: mytest.py
def run_tests():
print("테스트를 실행합니다!")
if __name__ == "__main__":
run_tests()
A. 직접 실행할 때
$ python mytest.py
테스트를 실행합니다!
→ 파일 안의 테스트 코드가 실행됩니다.
B. 다른 파일에서 불러올 때
main.py
import mytest
결과:
(아무것도 출력되지 않음)
if __name__ == "__main__": 덕분에
자동 실행이 막혀 있는 겁니다.
4. 왜 이게 좋은가?
이 구문을 사용하면 다음과 같은 장점이 있습니다.
- 내가 만든 함수(solution, run_tests)를 다른 파일에서 가져다 써도 자동 실행되지 않아요.
- 테스트 코드와 함수 정의를 깔끔하게 분리할 수 있습니다.
- 코딩테스트, 실무 모두에서 안전하게 재사용할 수 있습니다.
반응형
'IT > Python Basic' 카테고리의 다른 글
| [Python] divmod() 함수 (0) | 2025.11.12 |
|---|---|
| [Python] 초급 퀴즈27 - 2차원 배열 (0) | 2025.04.14 |
| [Python] 초급 개념27 - 2차원 배열의 이해 (1) | 2025.04.14 |
| [Python] 초급 개념11+ - 문자열 출력과 조작 특집 (0) | 2025.03.31 |
| [Python] 특집 - 십진수와 이진수 변환 (0) | 2025.03.21 |
| [Python] 특집 - lambda 함수 활용법 (0) | 2025.03.19 |
| [python] 파이썬 isdigit() 함수 완벽 가이드 (0) | 2025.03.19 |
| [Python] 특집 - range() 함수로 리스트 다루기 (0) | 2025.03.18 |
댓글