python
[Python] 파이썬 모듈 총정리 if __name__=="__main__"
고로케
2021. 4. 29. 19:44
반응형
# 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__' 구문만 실행 되었습니다.
이젠 이해가 잘 됩니다!
반응형