with 구문 & 컨텍스트 매니저

참고 : 널널한 교수의 코딩 클래스


(1) try - except - else - finally

try : 시도

  • except : try에서 오류 O시 실행

  • else : try에서 오류 X시 실행

finally : 반드시 실행


(2) try - finally

언제 주로 사용?

  • 반드시 실행해야 할 경우!
  • ex) 리소스를 오픈한 이후, 이를 close()하는 경우에!

가독성이…흠…

try:
    f=open('file.txt','w')
    try :
        f.write('Hi')
    finally :
        f.close()
except:
    print('NO!')


(3) with 문

try~finally를 보다 간편하게!

context manager에 의해 실행되는 __enter__() & __exit__()

을 정의하여, with 구문 내의 본문 앞/뒷부분 코드 수행

with expression as x:
    body


순서

  • 1) __enter__()
  • 2) with 구문 내의 본문
  • 3) __exit__()


Example

with open("file.txt") as f:
    # open 이루어짐
    data = f.read()
    print(data)
    # close 이루어짐