Python

Python with 함수

seyeon1130 2025. 2. 28. 09:54

1. with 문이란?

with 문은 컨텍스트 매니저(Context Manager) 객체와 함께 사용되며, 블록이 끝날 때 자동으로 정리 작업을 수행합니다.

 

with 컨텍스트_매니저 as 변수:
    # 블록 내부 코드 실행
    # 변수는 컨텍스트 매니저가 사용할 객체

2. with 문을 사용해야 하는 이유

with 문을 사용하면 리소스 해제(close(), release() 등)를 자동으로 수행하기 때문에 실수로 닫지 않는 문제를 방지할 수 있습니다.
try-except-finally 블록을 사용하지 않고도 깔끔한 코드 작성이 가능합니다.

 

3. with 문 사용 예제

📌 1) 파일 입출력에서 사용

open() 함수를 사용할 때 with 문을 사용하면 파일을 자동으로 닫아줍니다.

# with 문을 사용한 파일 읽기
with open("example.txt", "r") as file:
    content = file.read()
    print(content)  # 파일 내용을 출력
# 파일이 자동으로 닫힘

with 문이 없다면? file.close()를 직접 호출해야 하지만, 실수로 빠뜨릴 가능성이 있음.

 

📌 2) 데이터베이스 연결에서 사용

import sqlite3

with sqlite3.connect("example.db") as conn:  # 데이터베이스 연결
    cursor = conn.cursor()
    cursor.execute("CREATE TABLE IF NOT EXISTS users (id INTEGER, name TEXT)")
    conn.commit()  # 자동으로 커밋됨
# 블록을 빠져나오면 conn이 자동으로 닫힘

 

📌 3) 멀티스레딩 (Lock 사용)

멀티스레딩 환경에서는 threading.Lock()을 사용해 스레드 간 충돌을 방지할 수 있습니다.

import threading

lock = threading.Lock()

with lock:  # 락을 자동으로 획득하고, 블록을 벗어나면 자동으로 해제됨
    print("Lock이 걸렸습니다.")