이 코드의 의미는 __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에서 파이썬을 직접 실행하냐 마냐를 저런 변수로 표현한다는게 흥미롭다.
단어만 생소할 뿐 어렵진 않다.