본문으로 바로가기

Python :: __name__ 과 __main__

category Programing/Python 2018. 5. 17. 17:08

오늘의 주제


파이썬을 사용하다가 궁금했었는데 무심코 지나쳤던 __name__과 __main__에 대해서 알아보자





궁금증이 생겼던 코드


사실 python 웹 어플리케이션 프레임워크인 flask를 사용하다가 궁금했던 것인데. Flask 클래스의 run함수를 실행시키는 코드가 if문 안에 있었다. 다음과 같은 코드이다


1
2
if __name__ == '__main__' :
    app.run()
cs


실질적인 프로그램 구동 코드가 왜 if문 안에 있을까? 어떤 경우에 실행하지 않을까? 라는 궁금증이 생겼었는데 드디어 알아보게 되었다






__name__


__name__은 변수이다. python은 모든 모듈에 __name__ 변수를 선언하고, 이 변수는 모듈의 이름을 값을 가진다. 예를 들어 현재 실행한 파일명이 nametext.py 라면 __name__의 값은 nametext가 될 것이다.






__main__


파이썬은 모듈 정보를 선언하여 관리한다. 해당 모듈이 메인 프로그램인지 서브 프로그램인지 __main__을 통해 판별할 수 있다. 이 __main__이라는 변수는 메인 프로그램 모듈을 가지고 있고, 비교를 통해 모듈의 메인/서브 여부를 판별할 수 있다.






END


결국 내가 궁금했던 저 코드에서 __name__과 __main__이 같다면 현재 실행되고 있는 모듈이 호출된 모듈이 아닌 직접 실행한 모듈임을 나타내는 것이다