'진짜 쉽다!' 파이썬 if __name__ == '__main__' 사용 이유와 의미
if __name__ == '__main__'이란?
'if __name__ == '__main__'은 파이썬에서 '함수 보호 장치'라고 할 수 있습니다.
이 개념을 이해하기 위해서는 "__name__"이라는 특별한 변수에 대해 먼저 알아야 합니다. 파이썬 __name__ == '__main__'의 의미를 제대로 이해하면 코드 구조화에 큰 도움이 됩니다.
__name__ 변수의 특징
파이썬 파일을 직접 실행하면 __name__ 변수에는 '__main__'이라는 값이 자동으로 지정됩니다. 이를 확인하기 위해 간단한 예시를 살펴보겠습니다.
파일명: hello.py
코드 내용:
이 파일을 직접 실행하면 다음과 같은 결과가 나옵니다:
이것이 바로 'if __name__ == '__main__''이 참이 되는 이유입니다. 파일을 직접 실행할 때 __name__의 값이 '__main__'이기 때문입니다.
당장 납득하시기에는 어려우실 겁니다. 왜냐하면 name을 출력했는데, main이 나왔으니깐요. 그러나 우선은 '아~ name을 실행하면 main이라는 값이 반환 되는 구나'하고 인정하시면 됩니다.
if __name__ == '__main__'의 활용
이 개념의 활용을 이해하기 위해, 두 개의 파일을 만들어 보겠습니다. 이를 통해 파이썬 __name__ == '__main__'의 실제 동작을 확인할 수 있습니다.
첫 번째 파일: hello.py
이 파일을 직접 실행하면 다음과 같은 결과가 나옵니다:
두 번째 파일: index.py
이 파일을 실행하면 다음과 같은 결과가 나옵니다:
여기서 주목해야 할 점은, hello.py의 'if __name__ == '__main__':' 블록 내의 코드(print(hello('batman')))가 실행되지 않았다는 것입니다.
이는 hello.py가 다른 파일(index.py)에서 import되어 사용될 때 __name__의 값이 'hello'가 되기 때문입니다. B파일에서 A파일의 name을 실행할 경우에는 main이 아니라, A파일의 파일명이 출력됩니다.
이해를 돕기 위해 간단한 코드를 작성해 보겠습니다.
이렇게 하면 '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__'을 적절히 활용하면 다른 파일에서 만든 유용한 함수를 좀 더 쉽게 재사용 하는 게 가능합니다.