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이 걸렸습니다.")
'Python' 카테고리의 다른 글
제라의 공식으로 달력 만들기 (0) | 2025.04.02 |
---|---|
파이썬 strftime, rrul 함수 (0) | 2025.03.13 |
파이썬 정규표현식 : re 함수 (0) | 2025.03.11 |
파이썬 버전 확인하기, 다운로드하기 (0) | 2025.03.05 |