Python With 함수

김무성·2022년 2월 21일
0

Python function

목록 보기
1/2

With

  • 보통 프로그램의 접근 방식
    1. 파일에 접근
    2. 파일 내용등을 읽고 쓰고 삭제하고 수정하는 등등 무언가의 일의 수행
    3. 파일을 해제(close) 하는 패턴
    예를 들어 우리가 엑셀 파일을 열으면 파일을 열고 있는 동안 다른 프로그램에서 엑셀 파일에 접근할 수 없게 된므로 파일을 열었으면 닫아주는 일은 필수이다.

  • 보통 close() 등과 같은 메소드를 사용하며 여기에는 숨은 문제점이 존재
    파일 처리를 수행하는 도중에 오류가 발생하게 되면 close() 문을 실행할 수 없고 그렇게 되면 이 파일은 영원히 닫을 수가 없게 된다.

  • with 문은 그 구문을 실행했을 때 오류가 발생하든 안하든 마지막에 close 를 해주도록 하는 것

동작방식

  • 파이썬은 특수메소드를 사용
    클래스를 알고 있다면 이해하기 쉬울 것이다.

  • enterexit 특수메소드를 가진 객체에 with 문을 사용가능

  • with 문 내 표현식은 한 객체로 평가

  • 객체의 enter 메서드가 호출되고 끝으로 호출 결과가 변수에 할당되며 블록을 모두 실행하면 블록에서 오류가 발생했더라도 파이썬은 그 객체에 exit 메서드를 호출하게 됨
    파일 객체의 exit 메소드는 파일을 닫는다.

Example

  • with 문의 형식
with <expression> as <variable>:

<block>
  • 실제 예제
with open('textfile.txt', 'r') as file:
    contents = file.read()

# 위 구문과 동일한 내용
file = open('textfile.txt', 'r')
contents = file.read()
file.close()
  • 두번째 코드를 실행한다고 할때 만약에 content = file.read() 에서 에러가 난다면 file 을 닫을 수 없으나 with 문을 사용하면 에러가 나더라도 file 을 자동으로 닫아줌

Reference

profile
graph data scientist

0개의 댓글