Desarrollo en Python con Claude Code
Aprenda sobre desarrollo en Python usando Claude Code. Incluye consejos practicos y ejemplos de codigo.
Mastering Claude Code for Python Development
Claude Code is not just for TypeScript — it’s equally powerful for Python development. It handles everything from FastAPI web development to data processing scripts and test creation.
Building a FastAPI Application
> Create a user management API with FastAPI.
> - Use Pydantic for validation
> - Use SQLAlchemy + asyncpg for DB connections
> - CRUD endpoints
> - JWT authentication
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": "John Doe",
"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
Generating Data Processing Scripts
You can write data processing scripts using pandas or polars at high speed with Claude Code.
> Create a script that reads a CSV file and performs the following:
> - Fill missing values (median for numbers, "unknown" for strings)
> - Parse date columns
> - Monthly sales aggregation
> - Output results to 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)
# Fill missing values
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("unknown"))
# Date parsing and monthly aggregation
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"Processing complete: exported {len(monthly)} months of data")
if __name__ == "__main__":
process_sales_data("sales.csv", "monthly_report.xlsx")
Generating Tests with pytest
> Create tests for the process_sales_data function using pytest.
> Use fixtures to create temporary CSV files.
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,Product A,1000\n"
"2026-01-20,Product B,2000\n"
"2026-02-10,Product 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 # January and February
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)
# Missing values are filled and included in aggregation
assert result["transaction_count"].sum() == 4
For overall test design, see the Complete Testing Strategy Guide.
Adding Type Hints
You can also have Claude Code add type hints to existing Python code.
> Add type hints to all Python files under src/.
> Make sure they pass mypy --strict checks.
Setting Python Rules in CLAUDE.md
## Python Development Rules
- Target Python 3.12+
- Always include type hints
- Use ruff format for formatting, ruff check for linting
- Use pytest for tests, maintain 80%+ coverage
For API development patterns, see How to Accelerate API Development. For CLAUDE.md best practices, see the Complete Guide to Writing CLAUDE.md.
Summary
Claude Code delivers high productivity in Python development as well. From FastAPI apps to data processing and test creation, it generates high-quality code when you communicate your specifications clearly.
For Python details, refer to the official Python documentation. For Claude Code, see the official Anthropic documentation.
Related Posts
Cómo potenciar tus proyectos personales con Claude Code [Con ejemplos]
Aprende a acelerar drásticamente tus proyectos personales de desarrollo usando Claude Code. Incluye ejemplos reales y un flujo de trabajo práctico desde la idea hasta el despliegue.
Cómo automatizar la refactorización con Claude Code
Aprende a automatizar eficientemente la refactorización de código usando Claude Code. Incluye prompts prácticos y patrones concretos de refactorización para proyectos reales.
Guia completa de configuracion CORS con Claude Code
Aprende sobre la configuracion completa de CORS usando Claude Code. Incluye consejos practicos y ejemplos de codigo.