[Python] 파이썬 모듈 총정리 if __name__=="__main__"
# 1. name 이란?
__name__ 은 모듈의 이름을 저장하는 변수입니다.
모듈의 이름을 저장?
(모듈 : 임포트 용도의 파일을 뜻한다)
궁금할 땐 일단 출력해보면 이해가 빠른데
# 2. 예제로 이해하자
# apple.py
def sum(x,y):
return x+y
def minus(x,y):
return x-y
print( f'apple name = {__name__}')
print('sum(2,3)= 5')
print('minus(3,2)= 1')
# bus.py
import apple
x= 5
y= 3
print (f'\n x+y = {apple.sum(x,y)}')
print (f'\n bus name = {__name__}')
다음과 같이 두개의 .py 파일이 있습니다.
bus.py 를 실행시키면
다음과 같이 출력됩니다.
apple 을 import했으므로 apple의 코드가 실행 되는데
그안에 프린트 내용이 그대로 출력되고 나서 def sum(x,y) 함수가 출력 되었습니다.
import한 apple 의 __name__ 은 모듈(파일)이름은 apple 로 그대로 출력되었고
run을 직접 한 bus.py의 __name__은 __main__으로 출력되었습니다.
이처럼 내가 직접 실행시킨 모듈이 __main__ 함수가 됩니다.
이 __name__ 변수를 이용하여 조건을 준다면 apple.py의 내용 중 원하는 부분을 실행,
원하지 않는 부분을 실행시키지 않는 제어가 가능합니다.
조건문 if __name__ == '__main__' 과
if __name__ == 'apple' 을 이용해봅니다.
다음과같이 apple.py 를 수정합니다.
def sum(x,y):
return x+y
def minus(x,y):
return x-y
print( f'apple name = {__name__}')
if __name__ == 'apple': # 조건 추가
print('sum(2,3)= 5')
if __name__ == '__main__': # 조건 추가
print('minus(3,2)= 1')
bus.py를 실행하면
결과는 다음과 같습니다.
apple.py의 if __name__ == 'apple' 인 부분만 실행되어 출력되었습니다.
apple.py 를 실행 시켜 보면
apple.py 를 직접 실행하였으므로 __name__ = __main__ 이 되어
if __name__ == '__main__' 구문만 실행 되었습니다.
이젠 이해가 잘 됩니다!
'python' 카테고리의 다른 글
[자료구조] 파이썬 큐(Queue), deque 사용법 총정리 (0) | 2021.06.19 |
---|---|
람다(lambda) 총 정리, key sort, key 정렬 (0) | 2021.05.14 |
파이썬 유용한 외부 패키지 모음 (0) | 2021.04.20 |
[python] 파이썬 명령어 모음/ 총정리 (2) | 2021.04.19 |
[python] 파이썬 내용 총정리 자료형/문자열/리스트 (0) | 2021.04.08 |
댓글