supergravity

파이썬 - __main__ 본문

콘텐츠/파이썬 -구조

파이썬 - __main__

supergravity 2021. 9. 8. 20:39

__main__은 파이썬 인터프리터가 실행되는 스크립트의 위치를 나타내는 것입니다.

 

파이썬은 namespace를 통해 오브잭트와 name(변수)를 연결합니다.

namespace는 딕셔너리 형태로 대부분 구현되어 있습니다.

namespace 중 파이썬 인터프리터가 실행될 때 global namespace가 생성됩니다.

global namespace는 globals()를 print 해보면 성분을 확인할 수 있습니다.

프린트해보면 키와 벨류로 구성된 딕셔너리 형태입니다.

namespace의 키는 스크립트에 바로 작성할 수 있습니다.

 

global namespace를 잘 보면 '__name__' : '__main__'가 저장되어 있습니다.

namespace의 키는 스크립트에서 사용할수 있으니 print(__name__)을 해봅시다.

그러면 __main__이 출력되는 것을 볼수 있습니다.

 

파이썬 프로그래머 라면 import를 통해 외부 모듈을 사용해 본 적이 있을 것입니다.

import 하면 파이썬 스크립트에서 바로 사용할 수 있습니다.

예를 들어

import dis

print(dis)

처럼 사용할수 있습니다.

이렇게 사용할수 있는 이유는 dis 또한 global namespace에 추가되기 때문입니다.

외부 모듈을 impor한 상태로 globals()를 체크 해보면 모듈의 이름을 찾아볼 수 있습니다.

 

정리해 보면 __name__은 인터프리터가 생성될때 생성됩니다.

그리고 python test.py처럼 처음 실행되는 스크립트를 나타내는 name입니다.

if __name__ == "__main__":
    # execute only if run as a script
    main()

그래서 위와 같은 코드로 많이 활용 됩니다.

 

 

https://docs.python.org/3.6/library/__main__.html#module-__main__

 

29.4. __main__ — Top-level script environment — Python 3.6.15 documentation

29.4. __main__ — Top-level script environment '__main__' is the name of the scope in which top-level code executes. A module’s __name__ is set equal to '__main__' when read from standard input, a script, or from an interactive prompt. A module can disc

docs.python.org

 

 

Comments