본문 바로가기
IT/Python Basic

[Python] 특수 변수 "__main__": 완전 쉽게 이해하기

by Echinacea 2025. 11. 12.
반응형

 

파이썬을 공부하다 보면
거의 모든 예제 코드 맨 아래에 이런 문장을 한 번쯤 본 적 있을 거예요.

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)를 다른 파일에서 가져다 써도 자동 실행되지 않아요.
  • 테스트 코드와 함수 정의를 깔끔하게 분리할 수 있습니다.
  • 코딩테스트, 실무 모두에서 안전하게 재사용할 수 있습니다.

 

반응형

댓글