본문 바로가기

카테고리 없음

if __name__ == __main__: 이것은 왜 쓰는가 ??

 

이 코드의 의미는 __name__ 이라는 애가 __main__ 이랑 같다면 ~ 밑에줄에 나오는 코드를 실행해라 이런거다.

 

__name__이라는 변수는 파이썬의 내장변수이다. 

파이썬 공식 사이트에서는 이 내장변수를 이렇게 설명한다. 

The __name__ attribute must be set to the fully-qualified name of the module. This name is used to uniquely identify the module in the import system.

"이 이름은 import system 안에서 모듈의 이름을 식별하기 위해서 사용된다."

 

if __name__ == __main__ 사실 이 조건문은 해당 모듈이 import 된 경우가 아니라 interpreter에서 직접 실행된 경우를 일컫는다. 그때는 조건을 충족하니 조건을 실행할거다. 

 

main_compare.py에서 내가 인터프리터로 이 .py 파일을 실행해보겠다. 코드는 다음과 같다. 

그리고 my_package를 import 하면서 먼저 실행될 __init__.py에도 if~else 저 코드를 집어넣었다. 

 

import my_package 


if __name__ == "__main__":
    print("인터프리터 상황")
    print(__name__)
else:
    print("임포트 상황")
    print(__name__)

(이게 main_compare.py)

 

(이게 __init__.py 안에 있는 코드)

두 개의 py 파일에서의 __name__ 변수가 다르다 !! 

__init__.py의 __name__ 변수는 my_package다. (import한 패키지 이름이 담겼다)

그리고 main_compare.py의 __name__변수는 __main__이 나왔다 !!

 

 

interpreter에서 파이썬을 직접 실행하냐 마냐를 저런 변수로 표현한다는게 흥미롭다. 

단어만 생소할 뿐 어렵진 않다.