본문 바로가기
프로그래밍 언어/Python

파이썬 if __name__ == "__main__"

by pagehit 2024. 2. 19.
반응형

if name == "main": 의 작동 방식

개요:

if __name__ == "__main__": 구조는 Python에서 스크립트가 실행되는 방식에 따라 코드의 어떤 부분이 실행될지 제어하는 역할을 합니다. 이것은 스크립트를 직접 실행하는 경우와 다른 스크립트에서 모듈로 가져오는 경우에 따라 코드의 실행 방식을 달리하게 해줍니다.

작동 방식:

  • 스크립트 실행: 스크립트를 직접 실행하면 (python my_script.py 등) __name__ 변수는 "__main__" 값을 갖습니다. 이 경우 if 블록 안에 있는 코드가 실행됩니다. 이 블록은 일반적으로 스크립트의 핵심 기능을 담당합니다. 마치 프로그램의 무대와 같다고 생각하면 됩니다.
  • 모듈 가져오기: 다른 스크립트에서 스크립트를 모듈로 가져오면 (import my_script 등) __name__ 변수는 가져온 이름 (my_script 등)을 갖습니다. 이 경우 if 블록은 실행되지 않고, 정의된 함수와 변수만 가져오는 스크립트에서 사용할 수 있습니다. 마치 무대 뒤의 소품 창고와 같다고 생각하면 됩니다.

이점:

  • 모듈형 코드: 스크립트 실행 로직과 재사용 가능한 함수를 분리함으로써 코드를 더욱 체계적이고 유지 관리하기 쉽게 만들 수 있습니다. 마치 배우들을 위한 대본과 소품 및 의상을 위한 별도의 창고가 있는 극장과 같다고 생각하면 됩니다.
  • 목적 지향적인 테스트: if 블록을 사용하여 스크립트의 핵심 기능을 단독으로 테스트할 수 있으며, 테스트 코드는 가져온 기능에 영향을 주지 않습니다. 마치 연극을 전체 공연 전에 따로 연습하는 것과 같다고 생각하면 됩니다.
  • 순환 참조 방지: 복잡한 프로젝트에서 여러 모듈을 사용하는 경우 if __name__ == "__main__": 구조는 두 모듈이 서로를 참조하려는 순환 참조를 방지합니다. 마치 교통 신호등이 차량들이 서로 충돌하지 않도록 안내하는 것과 같다고 생각하면 됩니다.

예시:

def greet(name):
    print(f"Hello, {name}!")

if __name__ == "__main__":
    name = input("Enter your name: ")
    greet(name)

이 예시에서 greet 함수는 다른 스크립트에서 사용할 수 있지만, 사용자 상호 작용을 위한 inputprint 문은 스크립트를 직접 실행할 때만 실행됩니다.

결론:

if __name__ == "__main__": 구조는 Python에서 코드 실행을 관리하는 강력한 도구입니다. 이 구조를 사용하면 코드의 모듈성을 높이고, 목적 지향적인 테스트를 수행하며, 프로젝트 구조를 명확하게 유지할 수 있습니다.

반응형

댓글