모듈은 함수, 변수, 클래스를 모아 놓은 파일이다. 즉, 다른 Python 프로그램에서 호출하여 사용할 수 있게끔 만든 파이썬 파일이다. 우리는 Python 프로그래밍을 할때 math, pandas 같은 굉장히 많은 모듈을 import하여 사용한다.
.py 파일에는 name이라는 숨겨진 변수가 있다. 이 변수는 모듈의 이름을 가지고 있는 변수로, 현재 .py 파일의 이름을 가지고 있는 변수라는 의미이다. 예를 들어, jeewoo.py라면 jeewoo라는 문자열을 name변수가 가지고 있게 된다.
파이썬의 name 변수는 파이썬이 내부적으로 사용하는 특별한 변수 이름이다. 만약 C:\doit>python mod1.py처럼 직접 mod1.py 파일을 실행할 경우, mod1.py의 name 변수에는 main 값이 저장된다. 하지만 파이썬 셸이나 다른 파이썬 모듈에서 mod1을 import할 경우에는 mod1.py의 name 변수에 mod1.py의 모듈 이름인 mod1이 저장된다.
그럼 왜 name을 사용하는 것일까?
파이썬은 최초로 시작한 스크립트 파일과 모듈의 차이가 없기 때문에 어떤 스크립트 파일이든 시작점도 될 수 있고 모듈도 될 수 있다. 그래서 name 변수를 통해 현재 스크립트 파일이 시작점인지 모듈인지 판단한다.
Python은 왜 프로그램의 시작점이 정해져 있지 않을까?
Python이 처음 개발될 당시에 Linux/Unix에서 사용하는 스크립트 언어 기반이었기 때문에 프로그램의 시작점이 따로 정해져 있지 않았다. 보통 Linux/Unix의 스크립트 파일은 파일 한 개의 이루어진 경우가 많은데, 이 스크립트 파일 자체가 하나의 프로그램이다 보니 시작점이 따로 필요하지 않았었다. 하지만 C나 Java의 경우에는 초기에 소스 파일을 여러개 사용했기 때문에 여러 소스 파일의 함수 들 중에서도 시작 함수(main)을 따로 정해놓았었다.
if __name__ == '__main__':
...
직접 불러야 main이 되어 작동하고, 다른 곳에서 import 형식으로 부르면 main이 아니기때문에 작동하지 않는다
참조 : https://velog.io/@jeewoo1025/Python-name-%EC%9D%B4%EB%9E%80