이번 게시물은 제가 파이썬을 공부하며 보았던
if __name__ == "__main__"
이 구문에 대해 정리한하여 포스팅 해보려고 합니다.
- if __name__ == "__main__" 이란?
그대로를 풀어서 얘기하자면 " __name__ 이 __main__ 이라면 실행한다. " 입니다.
이것을 이해 하기 위해서 저는 __name__ 과 __main__ 이 무엇인지 이해 하려고 했습니다.
__name__ 은 모듈의 이름을 가지고 있는 파이썬의 내장 함수 입니다.
직접 실행되는 경우에는 __main__ 을 반환하고
모듈을 import 해서 실행하는 경우는 모듈을 이름을 봔환하는 함수입니다.
- 예시
def func1():
print("함수 1 수행")
print(__name__)
func1()
if __name__ == "__main__":
print("함수 1 직접 실행")
else :
print("함수 1 임포트 실행")
이 처럼 function1.py 를 생성했습니다.
모듈을 직접 실행 했을 때는
이 처럼 __name__ 이 __main__ 으로 적용이 되어 출력되는 것을 볼 수 있습니다.
모듈을 import 해서 실행 하기 위해 function2를 만들었습니다.
import function1
print("함수 2 실행")
print(__name__)
if __name__ == "__main__":
print("함수 2 직접 실행")
else :
print("함수 2 임포트 실행")
앞서 만들었던 function1을 import 하여 실행 시켰고
function2에서 따로 똑같은 코드를 실행 시켰습니다.
그 결과 function1을 import 시켜서 __name__을 출력 시켰을 때는 import 한 모듈의 이름을 출력하였고
function2의 내부의 __name__은 __main__ 으로 실행 되었습니다.
이 두가지의 결과로
직접 실행한 코드의 __name__ 은 __main__ 값이 들어가고
import 된 모듈의 __name__ 은 모듈의 이름이 들어가는 것을 알 수 있었습니다.
- 결론
if __name__ == "__main__" 은 직접 실행 할 때 사용되게 만들어주는 조건문이면서
import 되었을 때 사용되지 않게 만들어 주는 역할을 한다.
틀린 부분이나 질문이 있으시면 댓글로 남겨주세요!
다음 포스팅으로 찾아오겠습니다! :)
'Python > Python 정리' 카테고리의 다른 글
[Python] 가정 설정문 assert 정리 (0) | 2021.06.07 |
---|---|
[Python] __call__ 함수 정리 (2) | 2021.06.06 |
[Python] *args와 **kwargs 정리 (0) | 2021.05.23 |
[Python] 클래스(Class) (0) | 2021.05.05 |
Python , NumPy 기본 (1) (0) | 2020.12.01 |