with란?
해결
block에 진입 및 탈출시 객체 A로 하여금 어떤 프로세싱을 동작케함.
<참고: http://soooprmx.com/wp/archives/4079>
<참고: http://effbot.org/zone/python-with-statement.htm>
with A as B:
pass
A는 블럭 진입시 A.__enter__()를 수행하고 그 결과를 B에 assign.
블럭내 코드를 수행하고, 탈출시(예외상황 포함) A.__exit__()을 호출함.
with open('file', 'w') as f:
f.write(~~)
진입시 __enter__()를 호출하고(__enter__()는 open()임) 그 결과를 f에 대입.
탈출시 __exit__()인데 이는 close()로 이를 수행함.