TIL #29 __name__=='__main__' 의 의미

채록·2021년 1월 16일
0

Python & Django

목록 보기
2/34
post-thumbnail

name == 'main' 의 의미

참고 자료 : https://madplay.github.io/post/python-main-function

파이썬에서 __name__ 변수는 내부적으로 사용되는 특별한 변수 이름이다. 그리고 __name__ == '__main__'의 의미는 메인 함수의 선언, 시작을 의미한다.

정확한 의미 파악을 위해 직접 코드를 실행하면서 익히려 하였다.


예제로 문제 상황 알아보기

1. 모듈을 import 시켰을때 출력결과이다.


그 결과 dot 파일이 import되어 add 함수가 제대로 작동하였다.

2. dot 모듈에 print함수를 추가해 dot 파일을 별도로 확인했다.


제대로 7이 출력되었다.

3. dot 모듈을 다시 banana 파일에 import하여 출력하였다.


import만 했을 뿐인데 dot.py의 코드가 실행되어 결과값이 출력되었따. add함수만 이용하려고 한건데!!

해결하기

1. dot파일 코드 변경하기

dot 파일에 다음과 같이 __name__ == '__main__' 조건문을 작성하였다. 그리고 나서 banana파일에 dot 파일을 import하여 출력해보았다.

아무것도 출력되지 않았다! 즉, dot 파일의 print 가 실행되지 않았다.


결과 분석하기

왜 저렇게 된걸까?!? __name__ == '__main__'이 뭐길래?!?

처음에 말했듯 __name__ 변수는 내부적으로 사용되는 특별한 변수 이름이다. 위의 예제를 통해 __name__ 이라는 변수에 __main__ 이라는 값이 할당된다.
다만, 해결하기에서 보았듯이 import dot을 통해 모듈을 불러와서 사용하는 경우 __name__변수에는 모듈 이름(dot)이 저장된다!

결과적으로 ìf __name__ == '__main__'와 같이 조건문을 사용하여 터미널에서와 같이 직접 호출되어 사용될 때는 그 자체로 기능을 수행하고, 동시에 다른 모듈에서 필요한 함수 등을 제공할 수 있다!

profile
🍎 🍊 🍋 🍏 🍇

0개의 댓글