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__' 구문만 실행 되었습니다.

 

이젠 이해가 잘 됩니다!

반응형