백엔드 개발 · 중급
Python의 컨텍스트 매니저와 with문의 동작 원리를 설명해주세요.
힌트 · __enter__와 __exit__ 메서드의 역할을 설명해보세요.
__enter____exit__리소스 관리예외 처리컨텍스트
모범답안
Python의 컨텍스트 매니저는 with 문과 함께 사용되어 특정 코드 블록의 실행 전후에 필요한 작업을 자동으로 처리해주는 역할을 합니다. 예를 들어 파일 열기/닫기, 네트워크 연결 설정/해제 같은 리소스 관리에 유용하죠.
with 문이 실행되면 컨텍스트 매니저 객체의 __enter__ 메서드가 호출됩니다. 이 메서드는 필요한 설정을 수행하고, with 문에 as 키워드가 있다면 값을 반환하여 변수에 할당합니다.
with 블록의 실행이 끝나면 (정상 종료든 예외 발생이든) 컨텍스트 매니저 객체의 __exit__ 메서드가 호출됩니다. __exit__ 메서드는 리소스를 정리하고, 예외가 발생했을 경우 이를 처리할 수 있습니다. __exit__ 메서드의 반환값에 따라 예외를 무시하거나 다시 발생시킬 수도 있습니다.
이러한 메커니즘을 통해 컨텍스트 매니저는 코드의 가독성을 높이고, 리소스 누수를 방지하며, 예외 처리 로직을 간결하게 만들어줍니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.