파이썬 - 재사용 가능한 TRY, CATCH 동작을 원한다면 contextlib과 with 문을 사용하라

이동욱

2021/09/24

Categories: 파이썬

BATTER WAY 18. 재사용 가능한 try/finally 동작을 원한다면 contextlib과 with 문을 사용하라


from threading import Lock

Lock = Lock()
with lock:
  # 어떤 불변 조건을 유지하면서 작업을 수행한다.
  ...
lock.acquire()
try:
  # 어떤 불변 조건을 유지하면서 작업을 수행한다.
  ...
finally:
  lock.release()

사용 예제


def my_function():
   logging.debug('debug data')
   logging.error('error log')
   logging.debug('additional debug data')

@contextmanager
def debug_logging(level):
    logger = logging.getLogger()
    old_level = logger.getEffectiveLevel()
    logger.setLevel(level)
    try:
        yield
    finally:
        logger.setLevel(old_level)

with debug_logging(logging.DEBUG):
    my_function()

with와 대상 변수 함께 사용하기


with open('my_output.txt', 'w') as handle:
  handle.write('data')

정리


참고 문헌

>> Home