본문으로 바로가기

if __name__ == '__main__' 은 무엇인가

category python 2020. 6. 3. 15:00
반응형

 

결론

결론 부터 말하자면 직접수행 과 import 시 의 구분을 알고 그에 맞게 수행처리 할수 있다.

직접실행할 경우 __name__ 에는 __main__ 이 들어가고

import 수행시에는 현재 모듈이 이름이 들어간다.

 

__name__ 은 무엇인가

__name__ 은 interpreter 가 실행 되기전 만들어 놓는 글로벌 변수 입니다.

 

if __name__ == '__main__' 을 쓰는이유

모듈을 만들어 다른 파일에서 import 시 import test 처럼 삽입 하게 되면 

함수,클래스 등이 아닌 인터프리터로 적어 코딩해 놓은

print('test') 등이 바로 수행되어 버린다.

아래의 예제를 보면

  • 모듈
 
# 여기는 test.py
sum = 0
 
def add(a,b):
    print('add')
    global sum
    sum = 0
    sum = a + b
    return sum
 
if __name__ == "__main__":
    print("직접 실행")
    print(__name__)
else:
    print("임포트되어 사용됨")
    print(__name__)
 
print('test111')
print('test222')
 

 

  • import 

위에 모듈을 여기에 import 할시 인터프리터 print 문들이 바로 수행되어버린다.

 
# 여기는 test1.py
import test
 

 

import 시 수행을 방지하는 방법

아래의 __name__ == '__main__' 처럼 사용하면 

직접수행 시 와 import 수행시를 확인할수 있다.

 
# 여기는 test.py
sum = 0
 
def add(a,b):
    print('add')
    global sum
    sum = 0
    sum = a + b
    return sum
 
if __name__ == "__main__":
    print("직접 실행")
    print(__name__)
    print('test111')
    print('test222')
else:
    print("임포트되어 사용됨")
    print(__name__)
 

 

 

반응형