Python에서 if name == ‘main’: 의 역할은?

Python에서 if __name__ == ‘__main__’: 의 역할은?

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__” 은 매우 중요한 문법입니다.

  1. Python은 실행 중인 모듈에 따라 __name__ 변수를 다르게 설정합니다.
  2. 이를 활용하면 특정 코드가 import 되었을 때 실행되지 않도록 만들 수 있습니다.
  3. 테스트 코드나 스크립트 모드를 분리할 때 유용하게 활용할 수 있습니다.

이제 Python 코드 작성 시 불필요한 실행을 방지하는 방법을 확실히 알게 되었겠죠? 😉