Referência de Problema / Solução
Consulta rápida para tarefas comuns em Python mapeadas para soluções idiomáticas e prontas para produção para Python 3.14.
Receita
Use Ctrl+F para encontrar seu problema. Copie a solução. Adapte os nomes ao seu projeto.
Quando usar isto:
- Momentos de "Como faço X em Python?" durante a implementação
- Padronização de revisão de código
- Referência rápida para integração
Tabela de Problema / Solução
| Problema | Solução Idiomática |
|---|---|
| Ler um arquivo | Path("f.txt").read_text(encoding="utf-8") |
| Escrever um arquivo | Path("f.txt").write_text(data, encoding="utf-8") |
| Listar arquivos recursivamente | Path("dir").rglob("*.py") |
| Requisição HTTP GET | httpx.get(url, timeout=30.0) |
| HTTP Assíncrono | async with httpx.AsyncClient() as c: await c.get(url) |
| Analisar JSON | json.loads(text) ou response.json() |
| Validar configuração | Pydantic BaseSettings ou BaseModel |
| Ferramenta CLI | Typer ou Click com [project.scripts] |
| Executar testes | uv run pytest |
| Formatar código | uv run ruff format . |
| Verificar código (lint) | uv run ruff check --fix . |
| Verificar tipos | uv run mypy src/ |
| Cache de resultados de função | @lru_cache(maxsize=128) |
| I/O Paralelo | asyncio.gather(*tasks) |
| CPU Paralela | ProcessPoolExecutor |
| Arquivo temporário seguro | tempfile.NamedTemporaryFile(delete=False) |
| Variável de ambiente com padrão | os.environ.get("KEY", "default") |
| Log estruturado | logging.getLogger(__name__).info("msg", extra={...}) |
| Tentar novamente em caso de falha | tenacity @retry ou manual com backoff |
| Analisar data/hora | datetime.fromisoformat(s) ou dateutil.parser |
| Itens únicos preservando a ordem | list(dict.fromkeys(items)) |
| Achatar lista aninhada | [x for sub in nested for x in sub] |
| Contar ocorrências | collections.Counter(items) |
| Agrupar por chave | itertools.groupby(sorted(items, key=k), key=k) ou defaultdict |
| Mesclar dicionários | {**d1, **d2} ou d1 | d2 (3.9+) |
| Dataclass rapidamente | @dataclass(frozen=True, slots=True) |
| Constantes Enum | class Color(Enum): RED = "red" |
| Gerenciador de contexto | Decorador @contextmanager |
| Subprocesso com segurança | subprocess.run(cmd, check=True, capture_output=True) |
| Carregar .env | pydantic-settings com env_file=".env" |
| Testar API HTTP | TestClient(app) (FastAPI) |
| Simular chamada externa | @patch("mymodule.httpx.get") |
| Serializar dataclass | dataclasses.asdict(obj) |
| Cópia profunda | copy.deepcopy(obj) |
| Verificar tipo em tempo de execução | isinstance(x, MyClass) não type(x) == MyClass |
| Ordenar dicionário por valor | sorted(d.items(), key=lambda kv: kv[1]) |
| Ler CSV | csv.DictReader(open("f.csv")) ou polars.read_csv("f.csv") |
| Ler parquet | polars.read_parquet("f.parquet") ou pd.read_parquet |
| Gerar UUID | uuid.uuid4() |
| Criptografar senha | argon2.PasswordHasher().hash(password) |
| Token seguro | secrets.token_urlsafe(32) |
| Analisar URL | urllib.parse.urlparse(url) |
| Medir tempo de função | time.perf_counter() antes/depois |
| Perfil de CPU | cProfile.run("main()") |
| Instalar pacote | uv add package |
| Bloquear dependências | uv lock && uv sync --frozen |
Exemplo de Trabalho
"""Padrões comuns combinados em um script realista."""
from __future__ import annotations
import logging
from functools import lru_cache
from pathlib import Path
import httpx
from pydantic import BaseModel
logging.basicConfig(level=logging.INFO)
log = logging.getLogger(__name__)
class Config(BaseModel):
api_url: str = "https://api.example.com"
cache_size: int = 128
@lru_cache(maxsize=128)
def fetch_status(base_url: str, service: str) -> dict:
with httpx.Client(base_url=base_url, timeout=10.0) as client:
r = client.get(f"/status/{service}")
r.raise_for_status()
return r.json()
def main() -> None:
config = Config()
for svc in ("billing", "auth", "notifications"):
data = fetch_status(config.api_url, svc)
log.info("service ok", extra={"service": svc, "status": data.get("status")})
out = Path("report.json")
out.write_text(str(fetch_status.cache_info()), encoding="utf-8")
if __name__ == "__main__":
main()O que isto demonstra:
- Pydantic para configuração, httpx para HTTP, lru_cache para deduplicação
- pathlib para I/O de arquivos, logging com extras
- Padrões da tabela de referência compostos juntos
Armadilhas
- Uso de idiomas desatualizados -
os.pathem vez de pathlib, formatação%em vez de f-strings. Correção: prefira as soluções da coluna da direita. - Copiar e colar sem contexto - incompatibilidade entre síncrono e assíncrono. Correção: combine a solução com seu contexto síncrono/assíncrono.
- Sem tratamento de erros - exemplos são mínimos. Correção: adicione try/except e timeouts em produção.
- lru_cache em argumentos não hasheáveis - TypeError. Correção: apenas argumentos hasheáveis ou chave de cache personalizada.
- Biblioteca
requestspara código novo -httpxé preferível para paridade síncrona e assíncrona. Correção: padronize emhttpx.
Alternativas
| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
| Busca no Stack Overflow | Problema novo | Tarefa comum listada aqui |
| Documentação da stdlib | Comportamento de caso extremo | Consulta rápida de idioma |
| Geração de código por IA | Estrutura de boilerplate | Padrões críticos de segurança |
FAQs
pathlib ou os.path?
pathlib para todo código novo. os.path apenas para compatibilidade legada.
requests ou httpx?
httpx para novos projetos. Suporta síncrono e assíncrono com a mesma API.
dataclass ou Pydantic?
dataclass para dados internos. Pydantic para limites de validação.
Como contribuo com novas entradas?
Proponha adições no guia de estilo da equipe quando um padrão se repetir na revisão.
Estes são específicos do Python 3.14?
A maioria funciona no 3.13+. Os padrões de correspondência usam a sintaxe de mesclagem de dicionário 3.9+.
Coluna Síncrono vs Assíncrono?
Use a coluna assíncrona em aplicativos FastAPI/asyncio. Síncrona para scripts e CLIs bloqueantes.
pandas ou Polars para CSV?
Polars para desempenho. pandas para compatibilidade com o ecossistema.
Como lidar com retentativas?
Biblioteca tenacity com backoff exponencial e jitter.
Testando esses padrões?
Cada padrão é testável unitariamente. Veja os artigos vinculados sobre pytest.
Onde está a stdlib completa?
docs.python.org/3/library/ - esta página é o atalho curado.
Relacionados
- 50 Regras Python - princípios por trás das soluções
- Referência de Estilo e PEP 8 - convenções de estilo
- Fundamentos Python - noções básicas da linguagem
- Visão Geral da Biblioteca Padrão - mapa da stdlib
Versões das Pilhas: Esta página foi escrita para Python 3.14.0, FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+ e uv 0.6+.