with 블록이 끝나면 정리도 끝나야 해
컨텍스트 관리자는 진입 시 __enter__, 이탈 시 __exit__를 호출해 예외가 나도 정리를 보장해. enter의 반환값이 as 이름에 묶이고, exit가 참을 돌려주면 예외를 억제해.
여러 자원은 들어간 반대 순서로 나온다
한 with에 여러 컨텍스트를 쓰면 왼쪽부터 들어가고 오른쪽부터 정리해. 두 번째 진입이 실패해도 이미 들어간 첫 자원은 닫혀.
파일, 잠금, 트랜잭션, 임시 작업 디렉터리처럼 “준비하고 반드시 되돌리기”가 반복된다면 try/finally를 재사용 가능한 수명 경계로 옮겨.