홍카나의 공부방

[Python] if__name__=="__main__"은 왜쓰나요? 본문

Programming Language/Python

[Python] if__name__=="__main__"은 왜쓰나요?

홍문관카페나무 2023. 5. 19. 14:12
if __name__=="__main__":
    # your codes here.

 

if __name__=="__main__"?

 

해당 모듈이 임포트된 경우가 아니라, 인터프리터에서 직접 실행된 경우에만 if문 이하의 코드를 돌리라는 명령이다.

 

파이썬 모듈을 실행할 수 있는 방법은

  1. 직접 실행하거나
  2. 다른 모듈에서 임포트하여 동작시키는 방법 2가지가 있다.

아래 코드를 살펴보자.

# main_test.py
def func():
    print("function working")

if __name__ == "__main__":
    print("직접 실행")
    print(__name__)
else:
    print("임포트되었음")
    print(__name__)

 

아래 명령으로 인터프리터에서 위 코드를 직접 실행시키면 __name__ 변수에 __main__이 담겨 나온다.

python main_test.py

> 직접 실행
> __main__

 

반면 다른 모듈에서 import하여 사용하면 __name__ 변수에 main_test라는 이름이 담겨 나온다.

import main_test
main_test.func()

> 임포트되었음
> main_test

 

즉, __name__==__main__은 인터프리터에서 직접 실행했을 경우에만 if문 내부의 코드를 실행시킨다는 명령이 된다.

__name__은 파이썬에 내장되어 있는 특별한 글로벌 변수고, 파이썬 인터프리터가 파이썬 파일을 읽을 때 설정한다.

 

 

출처

https://medium.com/@chullino/if-name-main-%EC%9D%80-%EC%99%9C-%ED%95%84%EC%9A%94%ED%95%A0%EA%B9%8C-bc48cba7f720

반응형