이전에 배웠던 작업을 with 키워드를 사용해 더 간편하게 만들면서 with 키워드를 배워보자.

import pickle

with open("profile.pickle", "rb") as profile_file:
    print(pickle.load(profile_file))

with 키워드를 사용하면 파일을 닫는 작업을 수동으로 해주지 않아도 된다. 이게 어떻게 가능한가?

with 는 파이썬의 컨텍스트 매니저라는 메커니즘을 통해 특정 코드 블록의 진입과 종료시 자동으로 필요한 설정과 관리를 수행한다. 위의 예제처럼 주로 DB연결, 락관리 등 리소스 정리가 필요한 작업에서 사용된다.

with 를 사용하려면 키워드 오른쪽에 __enter____exit__ 이 정의된 컨텍스트 매니저 객체를 작성해야 한다.

컨텍스트 매니저는 객체에 __enter____exit__**라는 두 가지 메서드를 정의하여 동작한다.