imhamburger 님의 블로그

파이썬(Python) - if __name__=="__main__"의 의미 이해하기 본문

파이썬(Python)

파이썬(Python) - if __name__=="__main__"의 의미 이해하기

imhamburger 2024. 8. 22. 19:44

if __name__=="__main__" 이 조건문은....

 

Python 파일이 직접 실행되었을 때만 특정 코드를 실행하도록 한다.

만약 이 파일이 다른 곳에서 모듈로 import되면, 이 블록 아래의 코드는 실행되지 않는다.

 

  • 직접 실행할 때 : __name__ 변수에는 "__main__"이 할당 (이때 __name__ 변수는 파이썬 파일명 그 자체)
  • 모듈로 import할 때 : 파이썬 파일이 다른 모듈에서 import된 경우, __name__ 변수는 파이썬 파일명 그 자체라고 하였으니 그 모듈의 이름(파일 이름)이 문자열로 할당

 

예시 test.py

def hello():
    print("hello")

	if __name__=='__main__':
    	print(f'world!, {__name__}')

 

예를들어, test.py 라는 파이썬파일이 있다고 해보자. 그리고 해당 파일을 python test.py로 실행시켜보자.

  • 이때 __name__ 은 파이썬 파일명인 test로 할당된다.
  • __main__은 직접 실행된 파이썬 파일명을 의미하는데 직접 실행했으니 test가 된다.
  • 그러므로 if문은 참이 된다.
  • 따라서 출력값은 ?

아래와 같다.

 

 

그러면 이제 test2.py라는 파이썬 파일을 만들고 test.py를 import 하여 함수를 호출해보자.

 

예시 test2.py

from test import hello

hello()

 

해당 파일을 python test2.py로 실행시켰다.

 

결과

 

왜 test.py와 다르게 hello만 출력되었을까?

  • __name__ 은 파이썬 파일명인 test2로 할당된다.
  • __main__은 직접 실행된 파이썬 파일명을 의미하는데 test2 는 import하여(직접이 아닌) 실행했으니 test가 된다.
  • 그러므로 if문은 거짓이 된다.
  • 따라서 if문안에 출력값은 출력되지 않는다.

 

결론...?

 

if __name__ == "__main__":는 주로 Python 파일이 직접 실행될 때와 다른 파일에서 임포트(import)될 때 다르게 동작하도록 만들고 싶을 때 사용하는 것 같다.