Python에서 if __name__ == “__main__” 의 역할은?
Python에서 코드를 실행할 때 자주 등장하는 코드가 있습니다:
if __name__ == "__main__":
print("Hello, World!")
이 코드는 무엇을 의미할까요? 🤔 그리고 왜 이렇게 작성해야 할까요?
1. __name__ 변수란?
Python은 실행 중인 모듈(파일)의 이름을 __name__ 이라는 변수에 자동으로 저장합니다.
예를 들어, hello.py 파일이 있다고 가정합시다:
# hello.py
print("__name__ 변수의 값:", __name__)
위 코드를 실행하면 다음과 같은 출력이 나옵니다:
$ python hello.py
__name__ 변수의 값: __main__
즉, Python은 실행 중인 파일이 ‘메인 프로그램’일 경우 __name__ 변수에 “__main__” 값을 할당합니다.
2. import 했을 때의 동작
만약 다른 파일에서 이 hello.py 를 import 하면 어떻게 될까요?
# main.py
import hello
이 경우 hello.py 가 실행될 때, __name__ 변수는 “hello”가 됩니다.
$ python main.py
__name__ 변수의 값: hello
즉, Python이 모듈을 import 하면 해당 모듈이 실행되지만, __name__ 변수의 값은 “__main__”이 아닌 모듈 이름이 됩니다.
3. if __name__ == “__main__” 의 필요성
이제 다음 코드를 살펴보겠습니다:
# hello.py
def greeting():
print("안녕하세요!")
if __name__ == "__main__":
greeting()
이제 hello.py 를 직접 실행하면:
$ python hello.py
안녕하세요!
그런데 만약 main.py 에서 import 하면?
# main.py
import hello
실행 결과:
$ python main.py
(아무 출력 없음)
이처럼 if __name__ == “__main__” 을 사용하면 모듈을 직접 실행할 때만 특정 코드가 실행되도록 만들 수 있습니다.
4. 결론
Python에서 if __name__ == “__main__” 은 매우 중요한 문법입니다.
- Python은 실행 중인 모듈에 따라 __name__ 변수를 다르게 설정합니다.
- 이를 활용하면 특정 코드가 import 되었을 때 실행되지 않도록 만들 수 있습니다.
- 테스트 코드나 스크립트 모드를 분리할 때 유용하게 활용할 수 있습니다.
이제 Python 코드 작성 시 불필요한 실행을 방지하는 방법을 확실히 알게 되었겠죠? 😉