728x90
반응형
__name__ : 파이썬 내장 변수
__name__에는 모듈의 이름이 담긴다. 쉽게말해서 파일의 이름.
if __name__ == ''__main__"는 뭘까?
__name__을 해당 .py 파일 안에서 print(__name__)을 하면 '__main__' 이 출력
__name__을 import 해서 다른 곳에서 print(__name__)을 하면 파일명이 출력
즉, if __name__ == "__main__" 이란 의미는 import 된게 아니고 해당 파일 안에서 실행됐을때만 실행한다는 의미
위의 조건문이 꼭 필요한 경우는 import 할 때인데
예를 들어, test.py 와 test2.py가 있다고 하자
test.py
def test_print():
print("executed on test.py)
while True:
print("Infinite")
test2.py
from test import test_print
test_print()
test2.py에서 $ python test2.py를 통해 실행을 한다고 하면,
원하는 결과 값은 "executed on test.py" 가 한번 출력되는 것이었을 텐데, 기대와 달리
def test_print(): 밑에 있는 while문까지 실행돼서 Infinite가 무한출력된다.
test.py가 모듈로 불러와지면서, 모두 실행되버리는 것이다.
이와 같이 import 되면서는 실행되지 않기를 원한다면 함수를 실행할 때 아래와 같이 if __name__ == '__main__' 를 활용!
test.py를 다음과 같이 해주어야 한다.
def test_print():
print("executed on test.py")
if __name__ == '__main__':
while True:
print("Infinite")
728x90
반응형
'Python' 카테고리의 다른 글
python file, directory 경로 / file , directory 여부 확인 (0) | 2022.12.15 |
---|---|
list index: list에서 특정 값의 순서 찾기 (0) | 2022.12.14 |
isinstance() (0) | 2022.12.01 |
assert (0) | 2022.12.01 |
python image base64 encoding # python으로 이미지를 base64 인코딩하기 (0) | 2022.11.29 |