피드로 돌아가기
Entendendo o `if __name__ == "__main__"` no Python de forma prática
Dev.toDev.to
Backend

Python 모듈 진입점 제어를 통한 Side Effect 방지 및 재사용성 확보

Entendendo o `if __name__ == "__main__"` no Python de forma prática

Felipe Cezar2026년 5월 13일8beginner

Context

Python의 모듈 시스템은 Import 시 파일 내 모든 최상위 코드를 실행하는 특성을 가짐. 이로 인해 라이브러리로 설계된 파일이 Import될 때 의도치 않은 함수 실행이나 리소스 소모가 발생하는 구조적 한계 존재.

Technical Solution

  • 내장 변수 __name__을 활용하여 실행 컨텍스트를 식별하는 분기 구조 설계
  • 직접 실행 시 __name____main__ 값을 할당하는 Python 인터프리터 동작 원리 이용
  • Import 시에는 파일명(모듈명)이 __name__에 할당되는 점을 이용해 특정 코드 블록 실행을 차단
  • if __name__ == "__main__": 구문을 통해 Entry Point와 Library Logic을 물리적으로 분리
  • 함수 및 클래스 정의는 모듈 레벨에 유지하고, 실행 로직은 main() 함수 내부에 캡슐화하여 제어

- 모듈 최상위에 API 호출, DB 쿼리, 파일 I/O 등 Side Effect를 유발하는 코드가 있는지 검토 - 라이브러리 형태로 재사용될 가능성이 있는 모든 파일에 `if __name__ == "__main__":` 패턴 적용 - 테스트 코드나 데모 실행 로직을 메인 진입점 블록 내부에 배치하여 모듈 오염 방지

원문 읽기