728x90
반응형
맨 위로 올라가기
Context

 

컨텍스트는 주변 환경, 상황, 조건을 의미하는 용어로 어떤 사건이나 상황이 발생하는 특정한 배경이나 조건을 나타낸다.

컨텍스트는 상황을 말하며, 네트워크로 인해 방대한 정보 네트워크에서 유용한 서비스 및 정보 검색을 위해 필요한 '상황 정보' 또는 '정보의 정보'라고 표현된다. 사전적 의미로 컨텍스트는 '상황, 맥락, 문맥상의 의미'며, 텍스트와 같은 단순 정보에 대한 해석이 아닌, 곧바로 인지되는 특정 상황을 말한다. 컴퓨팅에서는 문맥 및 상황에 따라 이해되는 한 차원 높은 공간이나 영역을 의미한다.

 

Context Manager

 

컨텍스트 관리자는 파이썬에서 'with'문과 함께 사용되는 객체로,

컨텍스트 관리 프로토콜을 구현하여 리소스의 할당 및 해제를 관리한다.

이는 File Handling, Network Connection, DataBase Connection 등과 같은 resource를 사용할 때
resource를 안전하게 열고 닫는 등의 작업을 수행하는데 사용된다.

 

개발 할 때에는 항상 주어진 resource를 효율적으로 사용하도록 해야 한다.

따라서 주의할 점으로는 파일의 사용이 끝나면 반드시 파일을 닫아야 하며 그렇지 않으면 리소스 낭비와 예측 불가능한
작업으로 이루어질수도 있다. 프로젝트의 규모가 커지고 로직이 더욱 복잡해 질 수록 모든 파일을 관리하며 사용 뒤
닫는 것은 쉬운 일이 아니다. 이처럼 사용 뒤에는 메모리를 이전의 상태로 되돌려 놓기 위한 프로세스가 필요하다.

f = open('test.txt', 'r', encoding='UTF-8')

text = f.read()

print(text)

f.close()

 


Pythonic Code

 

위 코드를 Python의 with 문을 사용하면 다음과 같다.

with open('test.txtt', 'r', encoding='UTF-8') as f:
    print(f.read())

 

처음 with 문 진입시 파일을 열어주고 with 문 scope 안에 코드가 완료된 이후 자동으로 파일을 닫아준다.

또한 중간에 error 발생 시 이전 코드에서는 파일이 닫히지 않았을 수도 있지만 with 문에서는 close를 보장한다.

 

이를 통해 'with'문을 사용하여 코드 블록의 시작과 끝에서 resource의 할당 및 해제를 자동으로 처리할 수 있다.
이는 코드의 가독성과 유지보수성을 향상시키며 예외상황에서의 안전성을 보장한다.

 

 

즉 다음과 동일한 기능을 하는 것이다.

f = open('test.txt', 'r', encoding='UTF-8')
try:
    text =f.read()
    print(text)
finally:
    f.close()

 

위와 같이 파일을 열고 닫는 일 뿐 아니라 특정 작업의 전후로 꼭 해야되는 일을 도와주는 것을 Context Manager라고 한다.

Context Manager는 효율적인 리소스 관리를 도와주며, 또한 불필요한 코드를 줄임으로서 보다 유지보수가 좋은 코드를 생산할 수 있도록 한다.

728x90
반응형

'Language > Python' 카테고리의 다른 글

I/O Model  (0) 2023.11.08
lambda expression  (0) 2023.04.16
Move average  (0) 2022.11.25
Basic Qt Code  (0) 2022.10.26
Basic Qt  (0) 2022.10.26

+ Recent posts