26 pontos por geniuskey 2024-07-14 | 5 comentários | Compartilhar no WhatsApp

Modern Good Practices for Python Development

Boas práticas modernas de Python, de Stuart Ellis, aborda pontos importantes a considerar no desenvolvimento com Python. Os principais tópicos são os seguintes:

Usando Python

  • Evite usar o Python embutido no sistema operacional: o Python incluído no sistema pode estar desatualizado.
  • Instale o Python com ferramentas que suportam várias versões: use ferramentas como pyenv ou mise.
  • Use a versão mais recente do Python: utilize a versão estável mais nova para obter correções de segurança e melhorias de desempenho.
  • Use pipx para executar aplicativos de desenvolvedor: execute aplicações em ambientes isolados com pipx.
  • Use ferramentas de projeto: recomendados PDM, Hatch, Mise e Rye.

Desenvolvendo projetos em Python

Sintaxe da linguagem

  • Use type hints: PEP 484, PEP 526.
  • Formatação de strings com f-strings: PEP 498.
  • Use objetos datetime com reconhecimento de fuso horário: PEP 615.

Projeto de aplicações

  • Use logging em vez de print().
  • Use o formato TOML para configuração: PEP 680.
  • Use I/O assíncrona apenas quando necessário.

Bibliotecas

  • Trate entrada de linha de comando com argparse.
  • Trate caminhos de arquivos e diretórios com pathlib.
  • Use os.scandir() rápido e eficiente em vez de os.listdir(): PEP 471.
  • Use subprocess ao executar comandos externos: PEP 324.
  • Para cliente web, use httpx em vez de requests.

Boas práticas de projeto

Para mais detalhes, consulte o artigo completo.
.
.

Resumo da discussão no Hacker News sobre Python Modern Practices

Na discussão do Hacker News sobre Python Modern Practices, usuários compartilharam opiniões sobre várias ferramentas e metodologias:

  1. Recomendação de uso do UV: usar UV é rápido e fácil, e o suporte também funciona bem quando surgem problemas. by screye
  2. Menção ao Rye: o Rye oferece suporte a fixação e download do interpretador Python, e está prevista integração com o uv. by rat87
  3. Ênfase na simplicidade das ferramentas atuais: com ambientes Mamba e o pip padrão, não há problemas, e não se sente necessidade de trocar de ferramenta. by helsinki
  4. Preferência por ferramentas básicas: com pip, venv e virtualenvwrapper, é possível resolver a maioria dos problemas. by throwadobe
  5. Defesa do uso do Pipenv: o Pipenv tem sido usado como uma solução completa, e não está claro por que não é mais adotado. by routerl
  6. Problemas do Poetry: o Poetry decepcionou por problemas como não conseguir adicionar identificadores de versão de commit do Git. by alisonatwork
  7. Conda e Mamba: o Conda é muito mais poderoso em gerenciamento de dependências, e o Mamba é mais rápido. by wanderingmind
  8. Problemas de packaging: os problemas de empacotamento do Python têm forte componente social e sempre continuarão sendo um problema. by jampekka
  9. Sugestão de substituto para o Pyenv: o Mise é mais rápido que o Pyenv e também oferece suporte a projetos Node. by odie5533
  10. Modelos Pydantic e dataclasses: modelos Pydantic têm validação poderosa, mas são lentos, enquanto dataclasses são leves e eficientes. by martinky24

Para mais detalhes, consulte a discussão no Hacker News.

5 comentários

 
kaydash 2024-07-15

Não há conteúdo sobre redução de peso de bibliotecas. Usar o virtualenv do miniconda3 e remover bibliotecas não utilizadas para distribuir de forma portátil garantiu melhor desempenho em sistemas de processamento distribuído como o yarn.

 
savvykang 2024-07-15

Por que deveríamos usar pip-tools ou uv? Não vejo absolutamente nenhuma base para a afirmação de que isso seja moderno ou melhor.

 
savvykang 2024-07-15

Parece haver um problema no comportamento atual do pip, em que não é possível especificar a versão de build, o que explica por que é preciso incluir hashes nos especificadores de dependência do pip. Sem esse contexto, um guia que apenas lista diretrizes não parece muito convincente.

 
jwseo 2024-07-16

O que vocês costumam usar principalmente??

 
savvykang 2024-07-16

Até agora eu vinha trabalhando apenas com pip freeze, escolhendo só bibliotecas com suporte a Windows/Linux, e ainda não tive problemas causados por mudanças de versão de patch. Mesmo assim, agora que conheço o problema, entendo a necessidade; só pretendo considerar usar pip-tools ou uv quando estiverem um pouco mais maduros.