반응형
결론
결론 부터 말하자면 직접수행 과 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__)
|
반응형
'python' 카테고리의 다른 글
파이썬 FTP 정리 파일업로드 파일다운로드 (0) | 2021.12.27 |
---|---|
pip is configured with locations that require TLS/SSL 문제 해결 (1) | 2020.06.29 |
파이썬 모듈 사용하기 (1) | 2020.06.03 |
파이썬 제어문(if) 정리 (0) | 2020.05.25 |
파이썬 집합(set) 자료형 정리 (0) | 2020.05.23 |