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": "[email protected]",
"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 공식 문서를 참고하세요.
무료 PDF: 5분 완성 Claude Code 치트시트
이메일 주소만 등록하시면 A4 한 장짜리 치트시트 PDF를 즉시 보내드립니다.
개인정보는 엄격하게 관리하며 스팸은 보내지 않습니다.
이 글을 작성한 사람
Masa
Claude Code를 적극 활용하는 엔지니어. 10개 언어, 2,000페이지 이상의 테크 미디어 claudecode-lab.com을 운영 중.
관련 글
Claude Code 다국어 글을 매일 발행하기 전에 확인할 7가지
누락된 언어, 깨진 CTA, 반영되지 않은 배포를 막기 위해 다국어 Claude Code 글을 매일 발행하기 전에 확인할 체크리스트입니다.
Codex Automations란? 잠자는 동안 AI가 콘텐츠 운영을 처리하게 하는 방법
Codex Automations로 트래픽 분석, 주제 선정, 글 작성, CTA 개선, 배포까지 자동화하는 실전 가이드.
Claude Code × GCP Cloud Functions 완전 가이드 | 서버리스 함수 초고속 개발
Claude Code로 GCP Cloud Functions를 효율화. HTTP/Pub/Sub/Firestore 트리거 구현부터 로컬 테스트·배포 자동화까지, Masa의 실무 경험을 토대로 실제 코드로 해설.