피드로 돌아가기
Dev.toBackend
원문 읽기
Python 모듈 진입점 제어를 통한 Side Effect 방지 및 재사용성 확보
Entendendo o `if __name__ == "__main__"` no Python de forma prática
AI 요약
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__":` 패턴 적용 - 테스트 코드나 데모 실행 로직을 메인 진입점 블록 내부에 배치하여 모듈 오염 방지