관리 메뉴

VivaButton

[Python] if __name__ == "__main__" 의미 본문

IT/파이썬

[Python] if __name__ == "__main__" 의미

비바버튼 2018. 8. 17. 14:48
728x90

1. [ Python ] if __name__ == "__main__" 의미
  Python 소스 코드에 보면 if __name__ == "__main__"으로 시작하는 부분을 볼 수 있습니다. 
  이 코드를 사용하면 작성한 스크립트 파일을 직접 실행시켰을 경우에만 참이 되어 if문 
  다음 문장들이 수행됩니다. 반대로 다른 파일에서 import해서 사용하는 경우에는 거짓이 되어 
  if문 다음 문장들이 수행되지 않습니다.

2. 테스트 환경
  OS : Win10 64bit

3. 테스트
  a. CodeTest.py와 CodeTest2.py 파일을 생성하고 아래 코드를 입력합니다.

# CodeTest.py # -*- coding: utf-8 -*- def ExecPrint(): return "Print Function" print(ExecPrint())
# CodeTest2.py # -*- coding: utf-8 -*- import CodeTest print "__name__ == \"__main__\" TEST" print CodeTest.ExecPrint()

  b. CodeTest2.py 파일을 실행시켜 보시면 Print Fuction이 두번 출력 되는 것을 보실 수 있습니다.
      분명 한번 호출 했는데 두번이 출력되는 이유는
      CodeTest.py에서 사용한 print(ExecPrint()) 코드가 CodeTest2.py에서 import 하는 과정에서
      실행하게 되는 것이고 함수만 사용하려고 했다면 예상하지 못한 결과값이 됩니다.

  c. 이런 현상을 방지하려면 CodeTest.py 파일의 코드를 아래와 같이 변경하면 됩니다.
      차이점은 if __name__ == '__main__' 코드가 추가 된것입니다.

# -*- coding: utf-8 -*- def ExecPrint(): return "Print Function" if __name__ == '__main__' : print(ExecPrint())

  d. 다시 CodeTest2.py 파일을 실행시켜 보시면 호출한 함수의 결과값만 출력됩니다.
       결론적으로 if __name__ == '__main__' 코드를 사용하게 되면 import 과정에서의
       불필요한 함수 호출을 막아 줄 수 있습니다.