본문 바로가기

Python

python: __name__ / if __name__ == '__main__':

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
반응형