본문 바로가기

개발자/Python

Python if __name__ == “__main__” 구문에 대해

반응형
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가 실행 전에 만들어 둔 글로벌 변수입니다.

반응형

'개발자 > Python' 카테고리의 다른 글

파이썬 join 함수 (문자열 관련)  (0) 2022.02.20
[Colab] Numpy 입문  (0) 2020.07.11
파이썬 개발환경 Colab 정리  (0) 2020.07.08
파이썬 자료형  (0) 2020.03.10
파이썬 딕셔너리  (0) 2020.03.06