본문 바로가기

파이썬

컨텍스트 관리자

컨텍스트 관리자(Context Manager)는 파이썬에서 with 구문을 사용할 때 사용되는 객체입니다. with 구문은 코드 블럭이 실행되기 전에 컨텍스트 관리자의 enter 메소드를 호출하고, 코드 블럭이 실행된 후에는 exit 메소드를 호출하여 컨텍스트를 관리합니다. 이를 통해 파일, 네트워크 연결 등과 같은 리소스를 열고, 사용이 끝난 후 자동으로 닫을 수 있습니다.

컨텍스트 관리자를 사용하려면, 해당 객체는 enter 메소드와 exit 메소드를 구현해야 합니다. 이 두 메소드는 다음과 같은 역할을 합니다.

 

  • enter(self) : with 구문이 시작될 때 실행되며, 컨텍스트 관리자가 리소스를 할당하고, 이를 초기화하는 등의 작업을 수행합니다. 이 메소드는 with 구문에서 사용되는 변수에 값을 할당할 수 있으며, 이 변수는 코드 블럭에서 사용됩니다.
  • exit(self, exc_type, exc_val, exc_tb) : with 구문이 끝날 때 실행되며, 컨텍스트 관리자가 할당한 리소스를 해제하고, 에러 처리 등의 작업을 수행합니다. 이 메소드는 에러가 발생하지 않은 경우 exc_type, exc_val, exc_tb 인자에 None이 전달됩니다. 그렇지 않은 경우, 이 인자들에는 예외 정보가 전달됩니다.

컨텍스트 관리자를 구현하면, with 구문을 사용하여 코드 블럭 내에서 해당 객체를 사용할 수 있습니다. 예를 들어, 파일 객체를 열고 닫는 경우 다음과 같이 컨텍스트 관리자를 사용할 수 있습니다.

with open('file.txt', 'r') as f:
    content = f.read()
print(content)

이 코드는 파일 'file.txt'을 열어 content 변수에 파일 내용을 저장하고, with 블럭을 빠져나가면 자동으로 파일을 닫습니다. 이와 같이 컨텍스트 관리자를 사용하면, 복잡한 리소스 관리를 간편하게 처리할 수 있습니다.

 

 

'파이썬' 카테고리의 다른 글

전개 연산자 '*'  (0) 2023.03.26
Einsum (Einstein Summation)  (0) 2021.10.31
라즈베리파이 OS Python3를 기본으로 설정하기  (0) 2021.07.25
Qt Designer  (0) 2021.06.19
일급 함수(First-Class Function, 퍼스트 클래스 함수)  (0) 2021.05.28