'진짜 쉽다!' 파이썬 if __name__ == '__main__' 사용 이유와 의미

if __name__ == '__main__' 사용 이유와 의미
if __name__ == '__main__' 사용 이유와 의미
if __name__ == '__main__' 사용 이유와 의미

이번 글을 100% 이해하기 위해서는 다음과 같은 사전 지식이 필요합니다.

  • 함수 작동원리

  • 조건문 작동원리

만약 두 개다 모른다면, 위 두 개에 대한 개념부터 숙지하시기를 권장드립니다. 둘 중 하나라도 제대로 이해하고 있다면, 이번 글을 읽으셔도 좋습니다.

그럼 if __name__ == '__main__' 사용 이유와 의미에 대해 알아보겠습니다.

이번 글을 100% 이해하기 위해서는 다음과 같은 사전 지식이 필요합니다.

  • 함수 작동원리

  • 조건문 작동원리

만약 두 개다 모른다면, 위 두 개에 대한 개념부터 숙지하시기를 권장드립니다. 둘 중 하나라도 제대로 이해하고 있다면, 이번 글을 읽으셔도 좋습니다.

그럼 if __name__ == '__main__' 사용 이유와 의미에 대해 알아보겠습니다.

if __name__ == '__main__'이란?

'if __name__ == '__main__'은 파이썬에서 '함수 보호 장치'라고 할 수 있습니다.

이 개념을 이해하기 위해서는 "__name__"이라는 특별한 변수에 대해 먼저 알아야 합니다. 파이썬 __name__ == '__main__'의 의미를 제대로 이해하면 코드 구조화에 큰 도움이 됩니다.


__name__ 변수의 특징

파이썬 파일을 직접 실행하면 __name__ 변수에는 '__main__'이라는 값이 자동으로 지정됩니다. 이를 확인하기 위해 간단한 예시를 살펴보겠습니다.

파일명: hello.py

코드 내용:

print(__name__)

이 파일을 직접 실행하면 다음과 같은 결과가 나옵니다:

__main__

이것이 바로 'if __name__ == '__main__''이 참이 되는 이유입니다. 파일을 직접 실행할 때 __name__의 값이 '__main__'이기 때문입니다.


당장 납득하시기에는 어려우실 겁니다. 왜냐하면 name을 출력했는데, main이 나왔으니깐요. 그러나 우선은 '아~ name을 실행하면 main이라는 값이 반환 되는 구나'하고 인정하시면 됩니다.

if __name__ == '__main__'의 활용

이 개념의 활용을 이해하기 위해, 두 개의 파일을 만들어 보겠습니다. 이를 통해 파이썬 __name__ == '__main__'의 실제 동작을 확인할 수 있습니다.

첫 번째 파일: hello.py

def hello(name):

    return f'Hello {name}'

if __name__ == '__main__':

    print(hello('batman'))

print(__name__)

이 파일을 직접 실행하면 다음과 같은 결과가 나옵니다:

Hello batman

__main__


두 번째 파일: index.py

import hello

print(hello.hello('superman'))

print(__name__)

이 파일을 실행하면 다음과 같은 결과가 나옵니다:

Hello superman

__main__

여기서 주목해야 할 점은, hello.py의 'if __name__ == '__main__':' 블록 내의 코드(print(hello('batman')))가 실행되지 않았다는 것입니다.


이는 hello.py가 다른 파일(index.py)에서 import되어 사용될 때 __name__의 값이 'hello'가 되기 때문입니다. B파일에서 A파일의 name을 실행할 경우에는 main이 아니라, A파일의 파일명이 출력됩니다.


이해를 돕기 위해 간단한 코드를 작성해 보겠습니다.

print(hello.__name__)

이렇게 하면 'hello'가 출력됩니다.

함수 보호 장치로서의 역할

'if __name__ == '__main__''을 사용하면, 한 파일(A)에서 다른 파일(B)의 함수만을 사용할 수 있게 됩니다.


B 파일에 'if __name__ == '__main__'' 코드를 적고 그 아래에 함수를 작성하면, 해당 함수는 A 파일에서 import 했을 때 '보호'받을 수 있습니다. 이는 파이썬 __name__ == '__main__'의 주요 활용 방법 중 하나입니다.


예를 들어 hello.py에서 'if __name__ == '__main__'' 아래에 있는 print(hello('batman')) 코드는 index.py에서 hello.py를 import 했을 때 실행되지 않습니다.


이 원리를 이용하면, 다른 파일에서 만든 유용한 함수를 다른 파일에서 재사용 할 수 있게 됩니다.

파이썬 if __name__ == '__main__' 사용 이유와 의미

'if __name__ == '__main__''는 파이썬에서 매우 유용한 기능입니다.


if __name__ == '__main__' 의미를 제대로 이해하고 활용하면, 코드 재사용성을 크게 향상시킬 수 있습니다.


동시에 불필요한 코드 실행을 방지할 수 있습니다. 파이썬 __name__ == '__main__'을 적절히 활용하면 다른 파일에서 만든 유용한 함수를 좀 더 쉽게 재사용 하는 게 가능합니다.

정봉준

Jung Bong Jun

mgz.less@gamil.com

© Copyright 2024

정봉준

Jung Bong Jun

mgz.less@gamil.com

© Copyright 2024

정봉준

Jung Bong Jun

mgz.less@gamil.com

© Copyright 2024