if __name__ == “__main__”은 왜 필요할까?

Chullin
2 min readJul 23, 2018

--

.

안녕하세요. 개발자 Chullin입니다.

오늘은 짧은 한 줄의 코드를 digging해보려고 합니다.

파이썬 소스코드를 보다보면 자주 마주하게 되는 한 줄은 다음과 같습니다.

if __name__ == "__main__":
//코드
//코드

.

해당 모듈이 임포트된 경우가 아니라 인터프리터에서 직접 실행된 경우에만, if문 이하의 코드를 돌리라는 명령입니다. 왜그럴까요?

.

모듈을 실행할 수 있는 방법은 직접 실행하거나 임포트하거나.

.

예를 들어, excuteThisModule.py가 다음이 전부라고 해보지요.

//excuteThisModule.pydef func():
print("function working")

if __name__ == "__main__":
print("직접 실행")
print(__name__)
else:
print("임포트되어 사용됨")
print(__name__)

이 모듈을 실행할 수 있는 방법은 두 가지 입니다.

1️⃣ 인터프리터에서 직접 실행하거나.

python3 executeThisMoudle.py

2️⃣ 다른 모듈에 임포트해서 실행하거나.

//현재 파일의 이름을 executor.py라고 해보죠.import executeThisMoudle.py
executeThisMoudle.func()

1️⃣처럼 인터프리터에서 직접 실행하면, __name__ 변수에 “__main__”이 담겨서 프린트됩니다.

직접실행
__main__

반면, 2️⃣처럼 모듈에서 임포트해서 실행하면, __name__변수에 “executeThisModule”이 담겨서 프린트됩니다.

임포트되어 사용됨
executeThisModule

즉, __name__ == __main__은 인터프리터에서 직접 실행했을 경우에만 if문 내의 코드를 돌리라는 명령이 됩니다.

.

__name__이 무엇인데요?

interpreter가 실행 전에 만들어 둔 글로벌 변수입니다.

개발자 Chullin이었습니다.

--

--