Boas Práticas da Biblioteca Padrão
Utilize os módulos "batteries-included" antes de recorrer ao PyPI - e saiba quando a biblioteca padrão não é suficiente.
Como Usar Esta Lista
- Verifique a biblioteca padrão durante a revisão de design antes de adicionar dependências.
- Documente "escape hatches" quando o PyPI for escolhido (httpx, pydantic, argon2).
- Fixe os recursos da versão do Python para o manifesto (3.14) na documentação da equipe.
A - Seleção
- Tente
pathlib+json+loggingantes de micro-pacotes. A maioria dos scripts não precisa de mais nada. - Adicione PyPI quando a biblioteca padrão carecer de recursos ou ergonomia na sua escala. HTTP/2, validação, hashing de senha.
- Prefira
tomllibpara TOML a partir do 3.11+. Alinhe-se com o ecossistemapyproject.tomleuv0.6+. - Use
zoneinfo+ datetimes UTC cientes. Instaletzdataem implantações Windows. -
argparseé suficiente para CLIs internas;typerquando a UX importa. Scripts sem dependências permanecem comargparse.
B - Segurança
-
subprocesscom argumentos em lista,shell=Falsepor padrão. Audite qualquershell=Truecom entrada do usuário. -
secretspara tokens; nunca o módulorandom. Links de sessão e redefinição usam CSPRNG. - Nunca use
sha256sozinho para senhas. Useargon2/bcryptatravés de bibliotecas estabelecidas. -
json.loadsde entrada não confiável com limites de tamanho. Evite DoS por payload gigante. - Padrões
rerevisados para backtracking catastrófico. Use timeout ou simplifique o padrão.
C - Arquivos e Tempo
- Objetos
Pathe codificaçãoutf-8explícita em I/O de texto. Sem concatenação de caminhos em string. - Armazene UTC; converta com
zoneinfopara exibição. Rejeite datetimes ingênuos no domínio. -
hashlib.file_digestou atualização em blocos para arquivos grandes. Não leia multi-GB para RAM. - Precedência de configuração: CLI > env > arquivo > padrões. Documente a ordem no README.
- Sem segredos em INI commitados no git. Injeção de ambiente para chaves.
D - Ergonomia
-
dataclass+StrEnumpara DTOs internos; Pydantic na borda da API. Limite de validação claro. -
contextmanagerpara escopos pequenos;ExitStackpara muitos. Teardown garantido. -
itertoolscom cadeias preguiçosas para iteráveis grandes. Useislice/batchedem vez de materializar listas. -
functools.lru_cacheapenas em funções puras hashable. Sem cache ilimitado em argumentos ilimitados. - Compile regex na importação para caminhos críticos. Use grupos nomeados para manutenibilidade.
E - Operações
-
loggingconfigurado nomain, não em bibliotecas. Bibliotecas usamgetLogger(__name__). -
subprocesscom timeouts em todas as chamadas de serviço. Sem processos filhos travados. -
uuid4para IDs opacos; considereuuid7para localidade de banco de dados a partir do 3.14+. Corresponda ao tipo de armazenamento. -
compare_digestpara comparações de segredos. Verificações seguras contra tempo. - Reavalie a biblioteca padrão a cada atualização do Python. Novas baterias (tomllib, batched, uuid7) podem remover dependências.
FAQs
Quando o PyPI é obrigatório?
Clientes HTTP de produção, hashing de senha, drivers de banco de dados assíncronos, validação de esquema em escala.
A biblioteca padrão é mais lenta?
Frequentemente competitiva (hashlib, json); faça o perfil antes de trocar por orjson etc.
Como resistir ao inchaço de dependências?
ADR para cada nova dependência: problema, alternativa da biblioteca padrão rejeitada, proprietário, critérios de remoção.
tzdata no Windows?
Adicione o pacote tzdata aos requisitos ao usar zoneinfo.
urllib vs httpx?
urllib ok para scripts estritamente controlados; serviços usam httpx com timeouts e pooling.
configparser vs env?
Arquivos para padrões; segredos e substituições por ambiente em variáveis de ambiente.
Cuidado com pickle na biblioteca padrão?
Nunca despickle bytes não confiáveis - use json ou esquemas explícitos em vez disso.
more-itertools?
Ótimas receitas - mas verifique itertools.batched do 3.12+ e a biblioteca padrão primeiro.
Testando código da biblioteca padrão?
Fixture tmp_path, mocks de subprocess, datetimes fixos - testes unitários determinísticos.
uv e a biblioteca padrão?
uv gerencia dependências; a biblioteca padrão vem com o pin do Python - documente ambos no rodapé da stack.
Relacionados
- Visão Geral da Biblioteca Padrão - mapa de módulos
- pathlib & os - sistema de arquivos
- hashlib, secrets & uuid - higiene criptográfica
- Boas Práticas de Erros e Logging - política de logging
Versões da Stack: Esta página foi escrita para Python 3.14.0 (3.14 estável, 3.13 em manutenção), 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+.