Python 컨텍스트 관리자: 실제로 필요한 세 가지 경우
대부분의 튜토리얼은 평범한 with open(...) 예제를 보여주고 멈춥니다. 여기 실제 코드에서 실제로 사용하는 세 가지 패턴과 각 패턴이 방지하는 실패 모드가 있습니다. 경우 1: 리소스 정리 및 오류 처리 무엇이든 발생하더라도 정리해야 하는 리소스가 있을 때: class DatabaseConnection: def __init__(self, config): self.config = config self.connection = None def __enter__(self): self.connection = create_connection(self.config) return self.connection def __exit__(self, exc_type, exc_val, exc_tb): if self.connection: self.connection.close() 왜 이것이 중요한가 예외 상황에서도 리소스 정리 리소스 누수 방지 코드 더 신뢰할 수 있게 만들기 경우 2: 임시 상태 관리 일부 상태를 임시로 변경한 다음 복원해야 할 때: ...