Claude Code로 Python 개발 효율 높이기
FastAPI 앱, 데이터 처리 스크립트, pytest 테스트까지 Claude Code로 Python 개발을 가속하는 실전 가이드입니다.
Python 개발에서 Claude Code 활용하기
Claude Code는 TypeScript뿐 아니라 Python 개발에서도 위력을 발휘합니다. FastAPI 기반 웹 개발, 데이터 처리 스크립트, 테스트 생성까지 폭넓게 대응할 수 있습니다.
FastAPI 애플리케이션 구축
> FastAPI로 사용자 관리 API를 만들어줘.
> - Pydantic으로 유효성 검사
> - SQLAlchemy + asyncpg로 DB 연결
> - CRUD 엔드포인트
> - JWT 인증
from fastapi import FastAPI, HTTPException, Depends
from pydantic import BaseModel, EmailStr
from sqlalchemy.ext.asyncio import AsyncSession
from datetime import datetime
app = FastAPI(title="User Management API")
class UserCreate(BaseModel):
email: EmailStr
name: str
password: str
class Config:
json_schema_extra = {
"example": {
"email": "user@example.com",
"name": "홍길동",
"password": "securepassword123",
}
}
class UserResponse(BaseModel):
id: str
email: str
name: str
is_active: bool
created_at: datetime
class Config:
from_attributes = True
@app.post("/users", response_model=UserResponse, status_code=201)
async def create_user(
user_data: UserCreate,
db: AsyncSession = Depends(get_db),
):
existing = await get_user_by_email(db, user_data.email)
if existing:
raise HTTPException(status_code=409, detail="Email address is already registered")
hashed = hash_password(user_data.password)
user = await create_user_in_db(db, user_data, hashed)
return user
@app.get("/users/{user_id}", response_model=UserResponse)
async def get_user(
user_id: str,
db: AsyncSession = Depends(get_db),
):
user = await get_user_by_id(db, user_id)
if not user:
raise HTTPException(status_code=404, detail="User not found")
return user
데이터 처리 스크립트 생성
pandas나 polars를 사용한 데이터 처리도 Claude Code로 빠르게 작성할 수 있습니다.
> CSV 파일을 읽어 다음 처리를 수행하는 스크립트를 만들어줘.
> - 결측치 보완(숫자는 중앙값, 문자열은 "불명")
> - 날짜 컬럼 파싱
> - 매출을 월 단위로 집계
> - 결과를 Excel로 출력
import polars as pl
from pathlib import Path
def process_sales_data(input_path: str, output_path: str) -> None:
df = pl.read_csv(input_path)
# 결측치 보완
numeric_cols = [c for c in df.columns if df[c].dtype in [pl.Float64, pl.Int64]]
string_cols = [c for c in df.columns if df[c].dtype == pl.Utf8]
for col in numeric_cols:
median_val = df[col].median()
df = df.with_columns(pl.col(col).fill_null(median_val))
for col in string_cols:
df = df.with_columns(pl.col(col).fill_null("불명"))
# 날짜 파싱 및 월 단위 집계
df = df.with_columns(
pl.col("date").str.to_date("%Y-%m-%d").alias("date_parsed")
)
monthly = (
df.group_by(pl.col("date_parsed").dt.truncate("1mo"))
.agg([
pl.col("amount").sum().alias("total_sales"),
pl.col("amount").mean().alias("avg_sales"),
pl.col("amount").count().alias("transaction_count"),
])
.sort("date_parsed")
)
monthly.write_excel(output_path)
print(f"처리 완료: {len(monthly)}개월 분량의 데이터를 출력했습니다")
if __name__ == "__main__":
process_sales_data("sales.csv", "monthly_report.xlsx")
pytest 테스트 생성
> process_sales_data 함수의 테스트를 pytest로 만들어줘.
> 픽스처로 임시 CSV를 생성하는 패턴으로.
import pytest
import polars as pl
from pathlib import Path
from process_sales import process_sales_data
@pytest.fixture
def sample_csv(tmp_path: Path) -> Path:
csv_path = tmp_path / "test_sales.csv"
csv_path.write_text(
"date,product,amount\n"
"2026-01-15,상품A,1000\n"
"2026-01-20,상품B,2000\n"
"2026-02-10,상품A,1500\n"
"2026-02-15,,\n"
)
return csv_path
def test_process_creates_output(sample_csv: Path, tmp_path: Path):
output = tmp_path / "output.xlsx"
process_sales_data(str(sample_csv), str(output))
assert output.exists()
def test_monthly_aggregation(sample_csv: Path, tmp_path: Path):
output = tmp_path / "output.xlsx"
process_sales_data(str(sample_csv), str(output))
result = pl.read_excel(output)
assert len(result) == 2 # 1월과 2월
def test_null_handling(sample_csv: Path, tmp_path: Path):
output = tmp_path / "output.xlsx"
process_sales_data(str(sample_csv), str(output))
result = pl.read_excel(output)
# 결측치가 보완되어 집계에 포함되어 있음
assert result["transaction_count"].sum() == 4
테스트 전체 설계에 대해서는 테스트 전략 완전 가이드에서 다루고 있습니다.
타입 힌트 추가
기존 Python 코드에 타입 힌트를 추가하게 할 수도 있습니다.
> src/ 아래 Python 파일에 타입 힌트를 추가해줘.
> mypy --strict 체크가 통과되도록.
CLAUDE.md에 Python 규칙 설정
## Python 개발 규칙
- Python 3.12 이상 대상
- 타입 힌트는 반드시 작성
- 포매터는 ruff format, 린터는 ruff check
- 테스트는 pytest, 커버리지 80% 이상
API 개발 패턴은 API 개발 가속 가이드, CLAUDE.md 작성법은 CLAUDE.md 작성 가이드도 함께 참고하세요.
정리
Claude Code는 Python 개발에서도 높은 생산성을 발휘합니다. FastAPI 앱, 데이터 처리, 테스트 생성까지 스펙을 명확하게 전달하면 품질 높은 코드가 만들어집니다.
자세한 내용은 Python 공식 문서와 Anthropic 공식 문서를 참고하세요.
Claude Code 워크플로우를 한 단계 업그레이드하세요
지금 바로 Claude Code에 복사해 쓸 수 있는 검증된 프롬프트 템플릿 50선.
이 글을 작성한 사람
Masa
Claude Code를 적극 활용하는 엔지니어. 10개 언어, 2,000페이지 이상의 테크 미디어 claudecode-lab.com을 운영 중.
관련 글
Claude Code로 리팩토링을 자동화하는 방법
Claude Code를 활용해 코드 리팩토링을 효율적으로 자동화하는 방법을 알아봅니다. 실전 프롬프트와 구체적인 리팩토링 패턴을 소개합니다.
Claude Code로 사이드 프로젝트 개발 속도를 극대화하는 방법 [예제 포함]
Claude Code를 활용해 개인 프로젝트 개발 속도를 획기적으로 높이는 방법을 알아봅니다. 실전 예제와 아이디어부터 배포까지의 워크플로를 포함합니다.
Complete CORS Configuration Guide: Claude Code 활용 가이드
complete cors configuration guide: Claude Code 활용. 실용적인 팁과 코드 예시를 포함합니다.