깃에서 파이썬 코드를 보면 if__name__ == '__main__':
이 자주 등장한다.
해당 코드는 왜 자주 등장하는지, 필수적으로 써야하는지 의미를 알아보고 싶어서 공부했다.
test.py와 main.py 파일을 만들었다.
test.py
#test py
print('test 모듈 불러오기')
print('test.py __name__ :', __name__)
main.py
#main py
import test
print('main.py __name__ :', __name__)
main.py 코드를 실행했더니
출력값이 다음과 같이 나왔다.
test.py는 main.py에서 import되었고 main.py는 인터프리터로 직접 실행한 코드이다.
test.py의 __name은 test이고 main.py의 __name은 __main__이다.
여기서 알 수 있는 점은 메인 인터프리터에서 실행되었을 경우는 __name이 __main인 것을 알 수 있다. 그리고 모듈 코드는 import될 때 자동으로 실행된다.
그렇다면 모듈이 import될 때 자동으로 실행되지 않게 하려면 어떻게 해야 될까?
test.py 코드에 if문을 추가했다.
if __name__ == '__main__':
print('test 모듈 불러오기')
print('test.py __name__ :', __name__)
그리고 main.py를 실행해보았다.
test.py의 코드가 자동으로 실행되지 않는다. 왜냐하면 test.py는 import 되었기 때문에 __name이 __main이 아니기 때문에 test.py 내부 코드는 자동으로 실행되지 않는다.
이런 이유로 프로그램의 원치 않는 동작을 방지하기 위해서 if __name == '__main':
코드를 사용하는 것이다.