본문 바로가기
파이썬 (Python)/General

if __name__ == '__main__' : 사용 용도 이해하고 활용하기

by ★√★ 2021. 2. 14.

 안녕하세요, Davey 입니다. 오늘은 간혹 보이는 구문인, if __name__ == '__main__' : 의 조건문의 의미와 왜 사용하는지, 그리고 사용하는 방법에 대해서, 제 나름대로 이해한 부분을 설명 드리도록 하겠습니다. 쉬운 이해를 돕기 위해서, 하나의 예제를 통해서, 설명 드리도록 하겠습니다. 

1. if __name__ == '__main__' :

: 구문 자체가 조건 문인 것를 확인 하실 수 있습니다. 이 구문을 살펴 보면, "__name__" 항목이, "__main__"인지를 물어보는 구문입니다. 즉, 맞으면 실행하고, 틀리면 else 구문에 기재된 code를 실행하라는 것입니다. 그럼 간단하게 아래 code를 통해서 추가 설명 드리겠습니다. 


# __name__이 __main__이면 '실행합니다' 를 출력하고, 틀리면 '실행하지 않습니다.'를 출력합니다.

if __name__ == '__main__':

   print('실행합니다.')

 

else:

    print('실행하지 않습니다.')

- 보통 모든 python file은 그 자체 파일에서, 코드를 구현하고, 수행할 때는 "__name__" 이, "__main__" 으로 자동 할당이 됩니다. 위 코드를 실행 시켜보면 거의 모든 파일에서는 '실행합니다'가 출력이 됩니다.

2. if __name__ == '__main__' : 사용 용도 및 응용하기

if __name__ == '__main__'에 대해서 간단하게 설명을 드렸으니, 어떻게 이용하는지를 설명드리도록 하겠습니다. 일단 python file을 아래와 같이 두 개를 만들어 보겠습니다. 

 

 1) __name__01.py

 2) __name__02.py

 

 __name__01.py 간단하게 함수를 포함한 코드를 작성해 보도록 하겠습니다.

 

# 함수 선언을 하여, test_text 변수에 입력하는 text를 같이 출력하는 함수

def test01 (test_text):

    return print('Hello, How are you', test_text)

 

 

test01("Davey")

- 위 코드를 출력을 해보면 아래와 같은 결과를 보실 수 있습니다. 여기까지는, 이미 다른 분들은 이해 하실 거라고 생각합니다. 그럼 다른 파일에서, "test01" 함수를 이용을 해보도록 하겠습니다. 

 

 

 __name__02.py 에, "test01" 함수를 불러와서 구현하는 코드를 짜보도록 하겠습니다. 코드는 아래와 같습니다.

 

import __name__01

print('================== 다른 파일에서 선언한 함수 불러와서 실행 =============')

__name__01.test01("other file")

- 위 코드를 실행을 시켜 보면 아래와 같은 결과 값을 보실 수 있습니다. 아래 결과 값을 보시면, 우리가 의도하지 않은, "Hello, How are you Davey" 까지 출력이 되는 걸 확인 하실 수 있습니다. 이런 현상 때문에, 위에  "if __name__ == '__main__' :" 의 조건문을 활용을 하는 것입니다. 

 

- 그럼 대체, "__name__" 이게 무엇인가 한 번 알아보도록 하겠습니다. 

 

1) __name__01.py 에서 __name__01.py의 "__name__"을 출력해보도록 하겠습니다. 아래와 같이 "__main__"을 출력하는 걸 확인 하실 수 있습니다. 


def test01 (test_text):

    return print('Hello, How are you', test_text)

 

 

print(__name__)

 

2) 그럼 "__name__02.py" 에서 "__name__01.py" 의  "__name__" 과 "__name__02.py" 의 "__name__" 을 출력해보도록 하겠습니다. 그럼  "__name__01.py" 의 "__name__" 이 "__name__01"이 출력되는 걸 확인 하실 수 있습니다.

 


import __name__01

print(__name__)
print(__name__01.__name__)

 

- 즉, 실행하는 파일에 위치에 따라, "__name__" 의 값이 변환을 하는 것이죠. 그래서 위에 필요하지 않은 "Hello, How are you Davey" 를 같이 출력시키고 싶지 않은 때는, "__name__01.py" 에 아래와 같이 코드를 구현하며 됩니다.


def test01 (test_text):

    return print('Hello, How are you', test_text)

 

 

if __name__ == '__main__':

 

    test01("Davey")

- 그리고 나서, "__name__02.py" 에서 기존 Code를 실행 시켜보면 아래와 같이 정상적으로 원하는 값이 출력되는 것을 확인 하실 수 있습니다. 

 

 이상입니다. 위에 설명 드린 대로, 현재 코드를 실행하는 파일의 위치에 따라, "__name__" 의 이름이 바뀌므로, 이 부분을 활용하여, 다른 코드에 있는 함수를 이용할 때, 코드를 구현하시면 됩니다.

 

약간 이상한 코드만 나오면, 정말 어렵게만 느껴졌는데, 이렇게 용도를 설명하고, 구현되는 내용을 들으시니까, 이제는 "아! 이용해봐야 되겠구나!" 그런 생각이 드시지 않나요? 저는 맨 처음에 이 이론을 공부하고, 이해했을 때 그런 느낌이 들었었거든요! 여러분들도, 그런 생각이 들고, 더 진취적으로 활용하자 라는 마음가짐을 가지셨으면 하는 바램입니다. 그럼 오늘도 공부하시느라고, 수고하셨고요, 같이 공부하고 같이 성장하시죠! 감사합니다.  

 

 제 Posting이 조금이나마 정보 전달에 도움이 되셨길 빌며, 되셨다면, 구독, 댓글, 공감 3종 세트 부탁 드립니다. 감사합니다. 

[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치 하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.] 

728x90

댓글


// 내부링크를 현재창으로 열기 // Open internal links in same tab