imhamburger 님의 블로그
파이썬(Python) - if __name__=="__main__"의 의미 이해하기 본문
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)될 때 다르게 동작하도록 만들고 싶을 때 사용하는 것 같다.
'파이썬(Python)' 카테고리의 다른 글
파이썬(Python) - 순열(Permutation)과 조합(Combination) 구현하기 (0) | 2024.09.29 |
---|---|
파이썬(Python) - MANIFEST.in 개념 이해하기 + 생성하기 (0) | 2024.09.02 |
파이썬(Python) - Requests GET 요청, POST 요청 (0) | 2024.08.02 |
파이썬(Python) - 환경변수 불러오기 os.getenv (0) | 2024.07.31 |
파이썬(Python) - 디폴트 파라미터, *args, **kwargs (0) | 2024.07.29 |